SSH(Secure Shell)通過加密網絡封包實現安全的數據傳輸,所有通信數據經過加密壓縮,即使被截獲也無法解讀,同時壓縮機制還能提升傳輸速度。PHP 雖以 Web 開發著稱,但其 SSH2 擴展賦予了 CLI 腳本連接遠程服務器、執行命令、傳輸文件的能力,極大拓展了自動化運維的場景。
sudo aptitude update
sudo aptitude install php5-dev php5-cli php-pear build-essential \
libssl-dev zlib1g-dev
cd /usr/src && wget https://libssh2.org/download/libssh2-1.10.0.tar.gztar xzf libssh2-1.10.0.tar.gz && cd libssh2-1.10.0./configure && make && sudo make installsudo pecl install ssh2-0.13
# 安裝完成後在 php.ini 中添加 extension=ssh2.so
php -m | grep ssh2
# 輸出 ssh2 表示擴展已載入
<?php
$conn = ssh2_connect('example.com', 22);
if (ssh2_auth_password($conn, 'user', 'secret')) {
echo "認證成功\n";
$stream = ssh2_exec($conn, 'uptime');
stream_set_blocking($stream, true);
echo stream_get_contents($stream);
} else {
die('認證失敗');
}
?>
後續篇幅將介紹公鑰認證、SFTP 文件傳輸、反向隧道等進階用法。