phpseclib连接过早关闭

时间:2017-12-22 15:43:35

标签: php ssh phpseclib

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

"注意:连接在第3396行" \ phpseclib \ Net \ SSH2.php中提前关闭从来没有得到成功的消息。

登录详细信息在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');
}

我非常感谢您收到错误的任何帮助。

2 个答案:

答案 0 :(得分:1)

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

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

然后你应该看看最后几个数据包

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

答案 1 :(得分:0)

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

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