首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 結合 SSH 實現安全數據傳輸與遠程命令執行(上)

     編輯:PHP 相關知識

前言

SSH(Secure Shell)通過加密網絡封包實現安全的數據傳輸,所有通信數據經過加密壓縮,即使被截獲也無法解讀,同時壓縮機制還能提升傳輸速度。PHP 雖以 Web 開發著稱,但其 SSH2 擴展賦予了 CLI 腳本連接遠程服務器、執行命令、傳輸文件的能力,極大拓展了自動化運維的場景。

假設環境

  • 作業系統:Debian / Ubuntu(其他發行版請替換相應包管理器命令)
  • PHP 版本:PHP 5(PHP 4 需調整部分參數)
  • 具備基本的 PHP 與 Linux 服務器管理知識
  • 已安裝 PHP 核心套件

先決條件:安裝開發套件

sudo aptitude update
sudo aptitude install php5-dev php5-cli php-pear build-essential \
    libssl-dev zlib1g-dev

編譯安裝 libssh2

  1. 下載源碼:cd /usr/src && wget https://libssh2.org/download/libssh2-1.10.0.tar.gz
  2. 解壓並進入目錄:tar xzf libssh2-1.10.0.tar.gz && cd libssh2-1.10.0
  3. 配置、編譯、安裝:./configure && make && sudo make install

安裝 PHP SSH2 擴展

sudo 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 文件傳輸、反向隧道等進階用法。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved