phpseclib连接过早关闭

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了phpseclib连接过早关闭相关的知识,希望对你有一定的参考价值。

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

“注意:连接在第3396行的 phpseclib Net SSH2.php中提前关闭”并且永远不会获得成功消息。

登录详细信息在FileZilla上运行正常。

以下是我的代码

use phpseclibCryptRSA;
use phpseclibNetSSH2;

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');
}

任何帮助,为什么我收到错误非常感谢。

答案

我不得不回到phpseclib 2.0.2找到一个版本的phpseclib(2.0分支),它在第3396行有一个带有“连接过早关闭”的user_error

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日发布。当时发生了很多变化。

另一答案

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

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

那么你应该看看最后几个包

你能定义什么是你的php版本以及服务器上的操作系统是什么?

以上是关于phpseclib连接过早关闭的主要内容,如果未能解决你的问题,请参考以下文章

Bash Expect Telnet:处理服务器关闭的过早连接

为啥我们的 Spring/Hibernate/JDBC/Websphere 系统中的连接过早关闭?

AWS Nginx“从上游读取响应标头时上游过早关闭连接”

Nginx上游过早关闭连接,同时从上游读取响应标头,用于大型请求

握手失败 - 在 Intellij 中调试 Solr 时连接过早关闭错误

nginx,uwsgi,DJango,502 当 DEBUG=False,“上游过早关闭连接”