我正在尝试使用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');
}
我非常感谢您收到错误的任何帮助。
答案 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日发布。当时发生了很多变化。