尝试连接sftp时出错

时间:2015-05-18 11:16:23

标签: php sftp

我正在尝试使用sftp类建立连接

我的代码:

sudo psql -U my.username postgres

当我运行此脚本时,我收到消息$host = 'some ip address'; $username = 'username'; $pass = 'password'; $sftp = new SFTPConnection($host, 22); $sftp->login($username, $pass);

当我使用相同的用户并使用sftp传递Could not authenticate with username and password时,那么没关系,我可以建立连接,但是脚本我不能

任何人都知道这是什么问题?

2 个答案:

答案 0 :(得分:1)

尝试在login(){}函数的sftp.php中添加此代码。然后告诉它给出了什么错误:

if (!extension_loaded('ssh2'))
{
    throw new Exception("Extension ssh2 has to be loaded to use this class. Please enable in php.ini.");
}
if (! @ssh2_auth_password($this->connection, $username, $password))
    throw new Exception("Could not authenticate with username $username " . "and password $password.");
$this->sftp = @ssh2_sftp($this->connection);
if (! $this->sftp)
    throw new Exception("Could not initialize SFTP subsystem.");

编辑代码以执行以下操作[因为有些人说我们应该通过username_password和hostKeyAuthentication进行身份验证]
-------------------------------
以上描述表明:
问题在于php扩展,假设您要使用密码或使用公钥进行身份验证。由于这个假设,使用密码进行身份验证会给您带来失败,并可能导致您走向错误的方向(简要说明在链接中:Must Read)。

$connection = ssh2_connect($host, $port);
ssh2_auth_password($connection, $username, $password);
if (ssh2_auth_pubkey_file($connection, $username, $pubkey, $privatekey)) {
    echo "Public Key Authentication Successful";
}
else {
    echo 'Public Key Authentication Failed' ;
    return false;
}

答案 1 :(得分:1)

好的,这是什么问题...

我的IP地址在FTP服务器上是不允许的?!现在,当他们将我的IP放在白名单上时,一切正常。

谢谢你们的努力。