在php中如果想通过 SSH 连接到服务器执行命令并返回结果,可以使用php的 ssh2
扩展。下面是我编写的一个简单的代码,记录使用 ssh2
扩展连接到远程服务器并执行命令的过程。
安装所需的扩展
在php中要正常使用ssh2模块,必须事先安装ssh2扩展
对于ubuntu/debian系统
apt install php-ssh2
对于centos/redhat系统
yum install libssh2 libssh2-devel
#如果php是通过编译安装的,可以通过dnf来安装扩展
yum install dnf
dnf install libssh2-devel
或者通过编译安装ssh2模块(不推荐)
wget https://pecl.php.net/get/ssh2-1.3.1.tgz
tar -xzf ssh2-1.3.1.tgz
./configure --with-php-config=/bin/php/php-config
make && make install
示例代码
<?php
// SSH 连接的配置
$ssh_host = 'your_server_ip'; // 远程服务器 IP
$ssh_port = 22; // SSH 端口
$ssh_username = 'your_username'; // SSH 用户名
$ssh_password = 'your_password'; // SSH 密码
// 创建 SSH 连接
$ssh_connection = ssh2_connect($host, $port);
if ($connection) {
// 验证用户名和密码
if (ssh2_auth_password($connection, $username, $password)) {
echo "SSH 连接成功!\n";
// 执行命令
$ssh_command = 'ls -la'; // 你想要执行的命令
$ssh_stream = ssh2_exec($ssh_connection, $ssh_command);
// 使流可用
stream_set_blocking($ssh_stream, true);
// 获取命令输出
$ssh_output = stream_get_contents($ssh_stream);
fclose($ssh_stream); //关闭ssh连接
// 输出结果
echo "命令输出:\n$output\n";
} else {
echo "SSH 认证失败。\n";
}
} else {
echo "无法连接到服务器。\n";
}
?>
代码说明
配置连接信息:
建立连接:
ssh2_connect
用于建立 SSH 连接。
认证:
ssh2_auth_password
用于使用用户名和密码进行身份验证。
执行命令:
ssh2_exec
用于在远程主机上执行命令。
获取输出:
- 使用
stream_get_contents
获取命令的输出,并打印结果。
- 使用
注意事项
- 确保已正确安装并启用
ssh2
扩展。 - 如果使用的是密钥认证,应该使用
ssh2_auth_pubkey_file
方法进行认证。 - 在生产环境中,避免在代码中硬编码密码,可以考虑使用环境变量或配置文件。
评论 (0)