我在PHP中使用ssh2,如下所示:
$connection = ssh2_connect($host, $port);
ssh2_auth_pubkey_file($connection, $username, $pubKey, $privKey, $passphrase);
这会导致错误消息:
ssh2_auth_pubkey_file(): Authentication failed for username using public key
但是,我可以直接在终端中使用sftp进行连接。
$ sftp -oPort=PORT -i /path/to/private/key USER@HOST
(sftp命令响应请求密码,然后连接。)
调试时我有点失落 - ssh2命令要求并提供连接所需的所有相关信息,我可以直接在终端中使用sftp进行连接。问题可能是什么?
答案 0 :(得分:3)
我最终放弃了phpseclib的ssh2。
首先,按如下方式加载私钥:
$key = new Crypt_RSA();
$key->setPassword($passphrase);
$key->loadKey(file_get_contents($keyPath));
然后使用密钥登录:
$sftp = new Net_SFTP($host, $port);
$loginResult = $sftp->login($username, $key);