php远路copy以及执行命令
php远程copy以及执行命令
php远程copy以及执行命令
php远程copy文件以及在远程服务器中执行命令时,所用到的模块是ssh2,以后所有的操作都依据ssh2连接句柄完成。
1. SSH2模块的安装
1.1 安装需要的扩展包
wget http://www.libssh2.org/download/libssh2-1.4.2.tar.gz tar zxf libssh2-1.4.2.tar.gz cd libssh2-1.4.2 ./configure && make && make install
wget http://pecl.php.net/get/ssh2-0.11.3.tgz cd ssh2-0.11.3 phpize (如果报错命令没有找到,apt-get install php5-dev) ./configure ―with-ssh2 && make && make install
1.2 修改php配置信息
cd /etc/php5/cgi vim php.ini 添加项:extension=/usr/lib/php5/20090626/ssh2.so ssh2.so是编译ssh2时得到的模块,上面是模块的位置。
cd /etc/php5/cli vim php.ini 添加项:extension=/usr/lib/php5/20090626/ssh2.so ssh2.so是编译ssh2时得到的模块,上面是模块的位置。
1.3 重启web服务器
/etc/init.d/lighttpd restart
1.4 查看是否加载了ssh2
[root@localhost ~]php -m | grep ssh2 ssh2
2. SSH2模块的连接应用
SSH2连接有两种方式,分别是用户名密码,ssh密钥形式。
2.1 用户名与密码
$connection = ssh2_connect("192.168.6.222",22); if (ssh2_auth_password($connection,"veno","ubuntu")) { echo "Authentication Successful! "; }else{ die("Authentication Failed..."); }
2.2 ssh密钥
$connection = ssh2_connect('192.168.6.222', 22, array('hostkey'=>'ssh-rsa')); if (ssh2_auth_pubkey_file($connection, 'root', '/root/.ssh/id_rsa.pub', '/root/.ssh/id_rsa')) { echo "Public Key Authentication Successful\n"; } else { echo ('Public Key Authentication Failed'); }
Ps: 密钥生成:
在服务器192.168.6.229上面以root登录
#ssh-keygen
有什么提问基本上回车即可
后成的公钥在~/.ssh/id_rsa.pub
如果想在229通过密钥验证登录到222上面,则把229的公钥id_rsa.pub cp到222上面,先手动登录root,然后运行:
cat id_rsa.pub >> ~/.ssh/authorized_keys
这样就可以在229上面ssh 192.168.6.229不需要输入密码即可登录到222。上面php代码在229上面也可以通过验证。
3. SSH2模块的具体应用
通过SSH2验证通过后,得到的连接符为$connection
3.1 实现远程copy文件
远程服务器文件copy到本地:
bool ssh2_scp_recv ( resource $session, string $remote_file, string $local_file )
Ps: 接收文件时,后面文件名可以为空,如:
ssh2_scp_recv($connection, '/home/xiaozl/veno1.exe', '/home/xiaozl/')
本地文件copy到远程服务器
bool ssh2_scp_send ( resource $session, string $local_file, string $remote_file [, int $create_mode] )
Ps:发送文件时,后面的文件名不能为空,如:
ssh2_scp_send($connection, '/home/xiaozl/package.xml', '/home/xiaozl/package.xml');
3.2 执行远程服务器上的命令并取返回值
resource ssh2_exec( resource $session, string $command [, string $pty [, array $env [, int $width [, int $height [, int $width_height_type]]]]] )
在229上面执行222上的命令具体实例:
$tcmd="cd /home/veno/gateway/radiusclient;"; $tcmd.="./nastool.sh get-status app=2b1c5364-db39-c76d-842c-11d4a81d555d"; $stream = ssh2_exec($connection, $tcmd); stream_set_blocking($stream,true); echo stream_get_contents($stream);
附件:测试中应用到的php代码
<?php echo "是访问到这里来了"; $connection = ssh2_connect('192.168.6.222', 22, array('hostkey'=>'ssh-rsa')); if (ssh2_auth_pubkey_file($connection, 'root', '/root/.ssh/id_rsa.pub', '/root/.ssh/id_rsa')) { echo "Public Key Authentication Successful\n"; //$flag=ssh2_scp_recv($connection, '/home/xiaozl/veno1.exe', '/home/xiaozl/'); //接收时,后面文件名可以为空 //$flag=ssh2_scp_send($connection, '/home/xiaozl/package.xml', '/home/xiaozl/package.xml'); //发送时,后面的文件名不能为空 //echo $flag; $tcmd="cd /home/veno/gateway/radiusclient;"; $tcmd.="./nastool.sh get-status app=2b1c5364-db39-c76d-842c-11d4a81d555d"; $stream = ssh2_exec($connection, $tcmd); stream_set_blocking($stream,true); echo stream_get_contents($stream); } else { echo ('Public Key Authentication Failed'); } echo "<br>"; $connection = ssh2_connect('192.168.6.222', 22); ssh2_auth_password($connection, 'veno', '*******'); $tcmd="cd /home/veno/gateway/radiusclient;"; $tcmd.="./nastool.sh get-status app=2b1c5364-db39-c76d-842c-11d4a81d555d"; $stream = ssh2_exec($connection, $tcmd); echo "<br>"; echo "-----------------------------------------------"; stream_set_blocking($stream,true); echo stream_get_contents($stream); echo "-----------------------------------------------"; echo "<br>";

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題
![Windows 11 中的 Telnet 完整教學 [安裝/啟用與故障排除]](https://img.php.cn/upload/article/000/000/164/168476253791019.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
<p>Telnet是「終端網路」的簡稱。它是用戶可以用來將一台電腦連接到本機的協定。 </p><p>這裡,本機是指啟動連線的設備,而連接到本機的電腦稱為遠端電腦。 </p><p>Telnet在客戶端/伺服器主體上運行,雖然它已經過時,但在2022年它仍然被許多人使用。許多人已經轉向Windows11作業系統,這是微軟提供的最新作業系統。 &

隨著雲端運算和物聯網的發展,遠端操作伺服器變得越來越重要。在Python中,我們可以使用Paramiko模組來輕鬆實現SSH遠端操作。在本文中,我們將介紹Paramiko的基本用法,以及如何在Python中使用Paramiko來遠端管理伺服器。什麼是ParamikoParamiko是一個用於SSHv1和SSHv2的Python模組,可以用於連接和控制SSH客戶

對於大多數Windows使用者來說,遠端桌面協定(RDP)一直是遠端管理的首選,因為它提供了友善的圖形介面。然而,對於那些需要更精細控制的系統管理員來說,SSH更適合他們的需求。透過SSH,管理員可以透過命令列與遠端設備進行交互,這樣可以讓管理工作更有效率。 SSH的優勢在於其安全性和靈活性,使得管理員能夠更方便地進行遠端管理和維護工作,尤其是在處理大量設備或進行自動化任務時。因此,儘管RDP在使用者友善性方面表現出色,但對於系統管理員來說,SSH的功能和控制力更勝一籌。以前,Windows用戶需要藉

CONNECTION_REFUSED是一種網路連線錯誤,通常會在試圖連接到遠端伺服器時出現。當客戶端設備試圖建立與伺服器的網路連線時,如果伺服器拒絕該連線要求,就會傳回一個CONNECTION_REFUSED錯誤。常見的原因包括:伺服器未啟動、伺服器無法接受更多的連線請求、伺服器防火牆阻止了該連線等。

解決方法:1、檢查網路連線;2、檢查伺服器狀態;3、清除快取和Cookie;4、檢查防火牆和安全軟體設定;5、嘗試使用其他網路等等。

背景如果需要訪問遠端伺服器的Mysql資料庫,但是該Mysql資料庫為了安全期間,安全措施設定為只允許本地連接(也就是你需要登入該伺服器才能使用),其他遠端連線是不可以直接訪問,並且對應的連接埠也做了修改,那麼就需要基於ssh來連接該資料庫。這種方式連接資料庫與Navicat裡面介面化基於ssh連接一樣。 Navicat連接資料庫安裝支援庫如果要連接Mysql,首先需要安裝pymysqlpipinstallpymysql安裝基於ssh的函式庫sshtunnelpipinstallsshtunnel#

1.做ssh互信的目的1.在做集群的時候是需要SSH互信,它有利於在另一節點方便操作。 2.使用scp遠端拷貝操作時,需要輸入目標伺服器的使用者名稱和密碼,這個時候可以做linux伺服器之間ssh互信配置,這樣在多個linux伺服器之間做操作時就可以免密登陸。 2.ssh互信配置的原理簡而言之,伺服器儲存目標主機的證書,以便自動完成認證,無需輸入密碼。 3.ssh互信設定步驟1、各節點產生自己的公鑰、私鑰對。 2、將自己的公鑰文件寄給對方。 3.驗證互信配置是否成功。 4.配置ssh互信這裡以MYDB01和

在進行伺服器建置或系統管理時,CentOS7.9是一個非常常用的作業系統版本,本文將為您提供關於CentOS7.9安裝以及安裝SSH的詳細步驟和說明。 CentOS7.9是一個免費且開源的Linux作業系統,它是基於RedHatEnterpriseLinux(RHEL)的二進位相容版本,以下是CentOS7.9安裝的步驟:1.您需要下載CentOS7.9的ISO鏡像文件,您可以從CentOS官方網站下載最新的CentOS7.9ISO鏡像檔。 2.在您的電腦上建立一個新的虛擬機或實體機,並將
