PHP 5.6 SSH2 使用指南
在現(xiàn)代互聯(lián)網(wǎng)應(yīng)用中,安全性越來越重要。為了保護(hù)我們的服務(wù)器,很多情況下需要使用 SSH(Secure Shell) 進(jìn)行訪問。SSH2 是 PHP 對 SSH2 協(xié)議的支持,在 PHP 中可以很方便地使用。本文將介紹 PHP 5.6 下 SSH2 的使用方法,并提供一些簡單實(shí)用的代碼示例。
安裝 SSH2 擴(kuò)展
在開始使用 SSH2 的時(shí)候,首先需要安裝 SSH2 擴(kuò)展。在 PHP 5.6 版本中,SSH2 擴(kuò)展需要手動(dòng)安裝。這個(gè)過程有些麻煩,需要根據(jù)操作系統(tǒng)和 PHP 版本來選擇相對應(yīng)的安裝方式。同樣,打開 ssh2 擴(kuò)展需要用到 OpenSSL。所以,你需要確保 OpenSSL 已經(jīng)正確安裝并且可用。
以下是在 Ubuntu 12.04 中安裝 PHP 5.6 SSH2 的方法。當(dāng)然,在其他的操作系統(tǒng)和 PHP 版本中,安裝過程可能會(huì)略有不同:
sudo apt-get install libssh2-1-dev sudo apt-get install libssh2-php sudo apt-get install php5.6-dev sudo pecl install ssh2-beta安裝之后,你需要在 `php.ini` 文件中加入下面這一行以啟用該擴(kuò)展:
extension=ssh2.so連接到 SSH 服務(wù)器 在 PHP 中連接到一個(gè) SSH 服務(wù)器,需要使用 ssh2_connect() 函數(shù)。例如,下面的代碼將連接到示例服務(wù)器 example.com。請將其中的用戶名和密碼修改成對應(yīng)服務(wù)器的憑據(jù):
$connection = ssh2_connect('example.com', 22); ssh2_auth_password($connection, 'username', 'password');當(dāng)然,你也可以連接到一個(gè)非標(biāo)準(zhǔn)端口的服務(wù)器。例如,下面的代碼將連接到端口號為 2222 的服務(wù)器:
$connection = ssh2_connect('example.com', 2222); ssh2_auth_password($connection, 'username', 'password');執(zhí)行命令 當(dāng)連接到 SSH 服務(wù)器后,我們可以向服務(wù)器發(fā)送命令并獲得返回結(jié)果。這個(gè)功能可以幫助我們自動(dòng)化完成很多工作。例如,我們可以使用 SSH2 向服務(wù)器發(fā)送一個(gè)查看系統(tǒng)信息的命令,并將結(jié)果返回到 PHP:
$stream = ssh2_exec($connection, 'uname -a'); echo stream_get_contents($stream); fclose($stream);在上面的代碼中,uname -a 是一個(gè)查看系統(tǒng)信息的命令。ssh2_exec() 函數(shù)會(huì)將該命令發(fā)送到 SSH 服務(wù)器,然后返回一個(gè)流對象。我們可以使用 stream_get_contents() 函數(shù)來獲取該流對象的內(nèi)容,并打印輸出。最后,我們需要關(guān)閉 SSH2 連接,使用 fclose() 函數(shù)。同樣的,我們可以使用其它命令來獲取文件列表、上傳文件等等。 發(fā)送文件 除了向服務(wù)器發(fā)送命令,我們還可以使用 SSH2 來發(fā)送文件、下載文件等。下面的代碼將把本地文件 /local/dir/file.txt 發(fā)送到 SSH 服務(wù)器的 /remote/dir 目錄下:
ssh2_scp_send($connection, '/local/dir/file.txt', '/remote/dir/file.txt');上面的代碼通過 ssh2_scp_send() 函數(shù)將本地文件發(fā)送到 SSH 服務(wù)器。第一個(gè)參數(shù)是 SSH2 連接對象,第二個(gè)參數(shù)是本地文件的路徑,第三個(gè)參數(shù)是服務(wù)器上目標(biāo)文件的路徑。你也可以使用 ssh2_scp_recv() 函數(shù)從服務(wù)器上下載文件到本地。 總結(jié) SSH2 擴(kuò)展在 PHP 中提供了連接到 SSH 服務(wù)器的 API,這樣我們就能夠自動(dòng)化完成很多工作。本文介紹了如何連接到 SSH 服務(wù)器、執(zhí)行命令、發(fā)送文件等功能。當(dāng)然,SSH2 擴(kuò)展還有很多其它的功能,例如 SSH 隧道、SFTP 等等。我們可以通過閱讀 SSH2 擴(kuò)展的官方文檔來深入了解這些功能。