无法启动sftp子系统

时间:2013-08-23 10:29:48

标签: php ssh libssh2

我正在尝试在php中进行ssh连接。但我收到此错误无法启动sftp子系统。我不明白。我在谷歌找不到多少。请让我知道如何调试这个。我正在使用wamp。

$resConnection = ssh2_connect($strServer, $strServerPort);

if(ssh2_auth_password($resConnection, $strServerUsername, $strServerPassword)){
    //Initialize SFTP subsystem
    $resSFTP = ssh2_sftp($resConnection); -->error coming here

}else{
    echo "Unable to authenticate on server";
}

2 个答案:

答案 0 :(得分:0)

没有更多信息,很难说。不幸的是,libssh2在它提供的信息量方面非常有限。我建议你使用phpseclib, a pure PHP SFTP implementation。例如

<?php
include('Net/SFTP.php');

$sftp = new Net_SFTP('www.domain.tld');
if (!$sftp->login('username', 'password')) {
    exit('Login Failed');
}

print_r($sftp->nlist());
?>

如果您在切换后仍遇到问题,请将define('NET_SSH2_LOGGING', 3)置于顶部以获取日志。然后发布日志,以便您可以获得更好的帮助。

谢谢!

答案 1 :(得分:0)

我遇到了同样的问题,我通过以下步骤解决了这个问题。

1)首先,我注意到我们尝试进行sftp连接的服务器速度很慢。

2)我们这边有一个脚本尝试连接并从服务器获取文件因此由于速度缓慢问题,我们的脚本无法完成工作并等待连接,因为它非常慢。我使用以下命令检查了为sftp连接创建了多少进程

ps aux | grep sftp

3)然后我用以下命令

杀死所有这些进程
pkill sftp

4)我杀了那个进程后错误消失了。

<强>摘要

这个问题的主要原因是。在ftp服务器中存在缓慢问题,我们创建了太多连接。我认为服务器端的最大连接存在一些限制。