这行得通:
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
作为第二个参数。
是的,很尴尬,我把公钥和私钥交换了。这个库运行良好。我的坏…