Php 尝试连接sftp时出错

Php 尝试连接sftp时出错,php,sftp,Php,Sftp,我正在尝试使用sftp类建立连接 我的代码: $host = 'some ip address'; $username = 'username'; $pass = 'password'; $sftp = new SFTPConnection($host, 22); $sftp->login($username, $pass); 当我运行此脚本时,我收到的消息无法使用用户名和密码进行身份验证 当我使用同一个用户并用sftp传入fileZilla时,就可以了,我可以建立连接,但用脚本我不能

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

我的代码:

$host = 'some ip address';
$username = 'username';
$pass = 'password';

$sftp = new SFTPConnection($host, 22);
$sftp->login($username, $pass);
当我运行此脚本时,我收到的消息无法使用用户名和密码进行身份验证

当我使用同一个用户并用sftp传入fileZilla时,就可以了,我可以建立连接,但用脚本我不能


有人知道问题出在哪里吗?

尝试在您的sftp.php in login{}函数中添加此代码。然后告诉我它会产生什么错误:

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.");
编辑您的代码以执行以下操作[正如一些人所说,我们应该通过用户名\密码以及hostKeyAuthentication进行身份验证] ---------------- 上述说明表明: 问题在于php扩展假定您将使用密码或公钥进行身份验证。基于这种假设,使用密码进行身份验证将导致失败,并可能使您误入错误的方向。链接中有简要说明:


好的,这里有什么问题

FTP服务器上不允许使用我的IP地址?!现在,当他们把我的IP列入白名单时,一切正常


感谢大家的努力。

要检查是否安装了OpenSSL,您可以从命令行查看使用“phpinfo”函数或“php-m”安装的所有模块。您从哪里获得了SFTPConnection?@Malik Asif Comsats是的,它已启用,版本为OpenSSL 1.0.1e-fips@MartinPrikryl我正在使用sftp类,如果你问我这个问题?如果现在执行的是:必须加载扩展ssh2才能使用这个类。请在php.ini中启用。这意味着您必须配置php.ini以正确加载ssh2。抱歉迟到了@gandraphere显示消息:无法使用用户名和密码进行身份验证。所以我猜ssh2加载正确。答案更新。请尝试这一个,并阅读在最后提供的链接,以获得更清楚的理解@这很好。祝你好运@gandrap接受你的答案,如果它解决了你的问题@gandrap
$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;
}