You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PHP连接远程SSH服务器并执行命令

PHP连接SSH服务器并执行命令的实现方案

方案1:使用PHP SSH2扩展(需要提前安装扩展)

安装扩展

  • Debian/Ubuntu系统执行:apt install php-ssh2
  • CentOS/RHEL系统执行:yum install php-pecl-ssh2
  • 通用安装方式:pecl install ssh2
    安装完成后重启PHP服务即可生效。

示例代码

<?php
// 建立SSH连接,默认端口为22
$sshConn = ssh2_connect('xx.xxxx.xxx', 22);
if (!$sshConn) {
    die('无法建立SSH连接,请检查IP、端口及服务器防火墙设置');
}

// 密码认证登录
if (!ssh2_auth_password($sshConn, 'root', 'xxx12333')) {
    die('SSH登录失败,用户名或密码错误');
}

// 执行需要的命令,示例为查看当前目录文件
$execStream = ssh2_exec($sshConn, 'ls -la');
stream_set_blocking($execStream, true);
// 读取命令返回结果
$result = stream_get_contents($execStream);
fclose($execStream);

// 输出结果
echo $result;

// 断开SSH连接
ssh2_disconnect($sshConn);
?>

方案2:使用phpseclib纯PHP库(无需安装扩展)

适合没有服务器权限安装PHP扩展的场景,通过Composer即可引入使用。

安装依赖

执行命令:composer require phpseclib/phpseclib:^3.0

示例代码

<?php
use phpseclib3\Net\SSH2;

// 引入Composer自动加载文件
require __DIR__ . '/vendor/autoload.php';

// 初始化SSH对象
$ssh = new SSH2('xx.xxxx.xxx', 22);
if (!$ssh->login('root', 'xxx12333')) {
    die('SSH登录验证失败');
}

// 执行命令并直接输出结果
echo $ssh->exec('ls -la');

// 执行多条命令示例
$ssh->write("cd /var/www \n");
$ssh->write("pwd \n");
echo $ssh->read();
?>

注意事项

  • shell_exec()是PHP用来执行本地服务器Shell命令的函数,本身不支持远程SSH连接,因此你之前的尝试无法生效是正常情况
  • 生产环境不建议硬编码SSH账号密码,可通过环境变量、加密配置文件等方式存储敏感信息
  • 建议优先使用SSH密钥认证替代密码认证,两种方案均支持密钥登录的配置

内容的提问来源于stack exchange,提问作者Tharusha Thishakya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 01:30:01