【问题标题】:PHP SSH conection using phpseclib Net_SSH2使用 phpseclib Net_SSH2 的 PHP SSH 连接
【发布时间】:2015-10-30 13:09:07
【问题描述】:

我正在尝试让远程 ssh 在我的网站(由 godaddy 托管)上运行。

我已经下载并放置了 phpseclib 到服务器上,它正在看到它,我正在使用文档推荐的以下代码

<?php

set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
include('Net/SSH2.php');
define('NET_SSH2_LOGGING', NET_SSH2_LOG_COMPLEX);

echo "<span>in progress: <br /></span>";

$ssh = new Net_SSH2('197.87.71.51', 2211);

if (!$ssh->login('postgres', 'postgres')) {
    exit('Login Failed');
} else {
    echo "<span>login success<br /></span>";
}

echo $ssh->exec('pwd');
echo $ssh->getLog();
echo $ssh->getLastError();

?>

我收到登录失败消息,我不知道从哪里开始调试。

我没有收到任何错误消息,看起来并没有发生任何事情

【问题讨论】:

  • 退出前需要做$ssh->getLog()。这样做并编辑您的问题以包含输出。

标签: php ssh phpseclib


【解决方案1】:

尝试查看错误

 print_r($ssh->getSFTPErrors());

或者只是

$ssh->getErrors()

第 5.1.8 章。在文档中调试 SSH-2

include('Net/SSH2.php');
define('NET_SSH2_LOGGING', NET_SSH2_LOG_COMPLEX);

$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
    exit('Login Failed');
}

echo $ssh->exec('pwd');
echo $ssh->getLog();

【讨论】:

  • 我尝试使用 print_r($ssh->getErrors());它输出'Array()'
  • 根据问题,只查看 $ssh->getLastError() (返回一个字符串)和 $ssh->getErrors() (返回一个数组)而不是筛选日志。
  • 要记录输出,需要定义 NET_SSH2_LOGGING 常量。定义('NET_SSH2_LOGGING',NET_SSH2_LOG_COMPLEX);在包含之后。
  • 我更新了问题中的代码以符合您的建议,它正在回显“登录失败”,但没有说明原因
  • @Trent - 您需要在exit 之前执行$ssh-&gt;getLog()。这样做并编辑您的原始问题以包含输出。
猜你喜欢
  • 2019-08-31
  • 1970-01-01
  • 2017-05-25
  • 2014-02-10
  • 2015-06-22
  • 2015-09-17
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
相关资源
最近更新 更多