【发布时间】:2016-08-10 02:56:17
【问题描述】:
我正在使用 phpseclib 库中的以下代码登录远程服务器(远程服务器使用:SFTP - SSH 文件传输协议):
<?php
set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
include('phpseclib/Net/SFTP.php');
$sftp = new Net_SFTP('200.160.163.10');
if (!$sftp->login('username', 'password')) {
exit('Login Failed');
}
?>
运行上述代码后,我收到以下消息:
Notice: Error reading channel data in /home/comdinhe/public_html/phpseclib/Net/SSH2.php on line 3480
Notice: Connection closed prematurely in /home/comdinhe/public_html/phpseclib/Net/SSH2.php on line 3500
Login Failed
有人知道会发生什么吗?
【问题讨论】:
-
您可以发布 SSH 日志吗?您可以通过在顶部执行
define('NET_SSH2_LOGGING', 2);,然后在exit之前执行echo $ssh->getLog();来获取它们。 -
这里是日志:pastebin.com/j9M7tZAM
-
连接需要一段时间。服务器需要 20 秒来获取
NET_SSH2_MSG_USERAUTH_SUCCESS数据包,然后需要 10 秒来发送NET_SSH2_MSG_CHANNEL_REQUEST数据包,另外需要 20 秒来发送NET_SSH2_MSG_CHANNEL_DATA数据包。不知道为什么要花这么长时间,但因为它正在尝试做$sftp->setTimeout(999999)或类似的东西。 -
通过将 Timeout 设置为 999999,错误消息消失了。但是我仍然无法复制文件。并且没有显示其他错误消息。
-
你能发布一个新的日志文件吗?