phpseclib 连接过早关闭

phpseclib Connection closed prematurely

我正在尝试使用 phpseclib 连接 SFTP 服务器,但出现以下错误

"Notice: Connection closed prematurely in \phpseclib\Net\SSH2.php on line 3396" 并且永远不会收到成功消息。

登录详细信息在 FileZilla 上运行良好。

下面是我的代码

use phpseclib\Crypt\RSA;
use phpseclib\Net\SSH2;

define('NET_SSH2_LOGGING', SSH2::LOG_COMPLEX);

$key = new RSA();
$key->setPassword('ppk file password');
$key->loadKey(file_get_contents('ppk file path'));

$ssh2 = new SSH2('domain:port');
if (!$ssh2->login('sftp user', $key)) {
    $log = $ssh2->getLog();
    echo $log;
    exit('Login Failed');
}else{
    exit('Success');
}

非常感谢任何帮助我解决错误的方法。

在这种情况下,SSH 日志可能会更有帮助。

你可以通过define('NET_SSH2_LOGGING', 2)获得它们 然后做 $ssh->getLog()

那你应该看看最后几个包

您还可以定义您的 php 版本是什么以及服务器上的 OS 是什么吗?

我不得不回到 phpseclib 2.0.2 找到一个版本的 phpseclib(2.0 分支),它在第 3396 行有一个 user_error 和 "Connection closed prematurely":

https://github.com/phpseclib/phpseclib/blob/2.0.2/phpseclib/Net/SSH2.php#L3396

最新版本的phpseclib是2.0.9。我会尝试升级。

2.0.2 于 2016 年 6 月 4 日发布。2.0.9 于 2017 年 11 月 29 日发布。那段时间发生了很多变化。