php 实现ssh
PHP 实现 SSH 连接
使用 PHP 实现 SSH 连接可以通过扩展库或第三方工具实现。以下是几种常见方法:
使用 phpseclib 库
phpseclib 是一个流行的 PHP 库,支持 SSH、SFTP 和 SCP 协议。安装后可以通过以下代码实现 SSH 连接:

require 'vendor/autoload.php';
use phpseclib3\Net\SSH2;
$ssh = new SSH2('hostname');
if (!$ssh->login('username', 'password')) {
exit('Login Failed');
}
echo $ssh->exec('ls -la');
使用 ssh2 扩展
PHP 的 ssh2 扩展是 PECL 提供的原生扩展,需先安装并启用。示例代码如下:

$connection = ssh2_connect('hostname', 22);
if (!ssh2_auth_password($connection, 'username', 'password')) {
exit('Authentication Failed');
}
$stream = ssh2_exec($connection, 'ls -la');
stream_set_blocking($stream, true);
echo stream_get_contents($stream);
使用 shell_exec 调用系统命令
如果服务器支持本地 SSH 客户端,可以直接调用系统命令:
$output = shell_exec('ssh username@hostname "ls -la"');
echo $output;
注意事项
- 确保服务器已安装必要的扩展或库(如
phpseclib或ssh2)。 - 使用密码认证时,避免硬编码密码,建议通过环境变量或配置文件管理敏感信息。
- 对于生产环境,推荐使用密钥认证而非密码。
密钥认证示例
使用 phpseclib 进行密钥认证:
use phpseclib3\Net\SSH2;
use phpseclib3\Crypt\PublicKeyLoader;
$ssh = new SSH2('hostname');
$key = PublicKeyLoader::load(file_get_contents('/path/to/private/key'));
if (!$ssh->login('username', $key)) {
exit('Login Failed');
}
以上方法可根据实际需求选择,phpseclib 更灵活且无需额外扩展,而 ssh2 扩展性能更高。






