我正在尝试使用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
时,那么没关系,我可以建立连接,但是脚本我不能
任何人都知道这是什么问题?
答案 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放在白名单上时,一切正常。
谢谢你们的努力。