首页 > 解决方案 > 无法连接到 phpseclip 中的主机(sftp)

问题描述

我必须连接到客户端 sftp 才能上传数据。这是我连接到客户端 sftp 的代码:

$sftp = new Net_SFTP('some ip', 22);
        if (!$sftp->login('username', 'password')) 
        {
            exit('Login Failed');
        }

但我收到此错误“无法连接到主机。第 800 行 SSH2.php 中的横幅超时”

SSH2.php 第 800 行是:

user_error(rtrim("Cannot connect to $host. Banner timeout"), E_USER_NOTICE);

任何人都可以解释这个描述:

在 Windows 上,这会返回“警告:检测到无效的 CRT 参数”错误

800 SSH2.php 行上方显示的描述

标签: phpsftpphpseclib

解决方案


目前尚不清楚您使用的是什么版本。您显然没有使用最新的 2.0 版本:

https://github.com/phpseclib/phpseclib/blob/2.0.11/phpseclib/Net/SSH2.php#L800

您也没有使用最新的 1.0 版本:

https://github.com/phpseclib/phpseclib/blob/1.0.11/phpseclib/Net/SSH2.php#L800

期望能够帮助您的人不得不强制每个版本找出user_error(rtrim("Cannot connect to $host. Banner timeout"), E_USER_NOTICE);第 800 行的版本是不合理的。

也就是说,我确实注意到当前版本没有说Banner timeout. 我能找到的最接近的线路是这一行:

user_error(rtrim("Cannot connect to $host. Error $errno. $errstr"));

$errno并且$errstr来自 fsockopen,在这种情况下)

我做了一些挖掘。看起来“横幅超时”至少 3.5 年没有出现在错误消息中:

https://github.com/phpseclib/phpseclib/commit/23c65c383945cfc9c2293f45a7cbc6f1a68178ec#diff-82a5983a6daace4acbcc65edf2dfb605

所以这至少是你的 phpseclib 安装的年龄。它可能比这更古老。所以我建议升级。


推荐阅读