即使相同的凭据通过命令行工作,也无法通过phpseclib登录


Cannot log in via phpseclib even though same credentials work via command line

这行得通:

sftp user@192.168.1.1

但当我尝试通过php cli使用phpseclib编程:

$this->sftp = new Net_SFTP('192.168.1.1')
$this->sftp->login('user');

它总是返回false。我尝试过不同版本的Phpseclib,没有任何工作。我甚至运行'whoami'从php应用程序和用户是我,所以它应该工作一样,当我做它手动,不是吗?我快疯了。我遗漏了什么?

编辑:

我也尝试使用Crypt/RSA.php$rsa = new Crypt_RSA(),然后$rsa->loadKey(file_get_contents({my_key})),我把它放入$this->sftp->login()作为第二个参数,但它也未能登录我。

我的第一个猜测:当您执行sftp user@192.168.1.1时,您正在进行私钥身份验证。从你正在做的CLI调用中看起来不像它,因为私钥要么在你的~/.ssh/id_rsa文件中,要么在你的ssh-agent安装中。

如果是这种情况,那么您需要做的是包括Crypt/RSA.php,然后执行$rsa = new Crypt_RSA(); $rsa->loadKey(file_get_contents(...));,然后将$rsa变量传递给$this->sftp->login作为第二个参数。

是的,很尴尬,我把公钥和私钥交换了。这个库运行良好。我的坏…