使用 PHP 进行 SSH 连接

Posted

技术标签:

【中文标题】使用 PHP 进行 SSH 连接【英文标题】:SSH connect using PHP 【发布时间】:2016-03-28 14:42:24 【问题描述】:

我正在尝试使用以下代码通过SSH 连接到服务器:

include('Net/SSH2.php'); 
$ssh = new Net_SSH2('mydomain.com'); 
if (!$ssh->login('xxxx', 'xxxx'))  
   exit('Login Failed'); 
else 
   echo "connected"; 
 
echo $ssh->exec('pwd');

上面写着connected,但没有显示代码输出 echo $ssh->exec('pwd');

为什么?

记录消息

-> NET_SSH2_MSG_CHANNEL_REQUEST (since last: 0.0002, network: 0s)
00000000  00:00:00:00:00:00:00:04:65:78:65:63:01:00:00:00  ........exec....
00000010  03:64:69:72                                      .dir

<- NET_SSH2_MSG_CHANNEL_FAILURE (since last: 0.0611, network: 0.0001s)
00000000  00:00:00:00                                      ....

【问题讨论】:

启用日志记录,并检查日志,phpseclib.sourceforge.net/ssh/examples.html#oneoff,logging @Nikhil 这是一个linux操作系统 酷,看看这个***.com/a/18925697/5043552 然后这个phpseclib.sourceforge.net/ssh/examples.html#interactive。不幸的是,它没有回答 为什么 问题 您可以在执行 PHP 的同一台机器上执行ssh xxxx@mydomain.com pwd 吗? 即使您运行 read() 而不是 exec(),是否也会出现错误?比如 echo $ssh->read('ls'); 【参考方案1】:

您可以在 php.ini 中使用 'ssh2_connect' 函数。 使用 'ssh2_exec' 并将结果存储在 $var 中。

最后你可以使用'stream_get_contents($var);'用于返回结果代码命令 ssh

不要忘记 'sleep(1)' 功能 php 以防止启动 ssh 命令后出现错误。

'ssh2_exec' 是一个资源 php。

ssh2_connect ssh2_auth_password ssh2_exec sleep php stream_get_contents

【讨论】:

以上是关于使用 PHP 进行 SSH 连接的主要内容,如果未能解决你的问题,请参考以下文章

通过代理PHP连接SSH

通过 php 中的 ssh 连接隧道请求

我应该通过PHP使用ssh后断开连接吗?

ubuntu无法ssh远程连接

ssh跳板机与远程连接

php ssh 连接 phpseclib