0

我在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 进行正常连接。问题可能是什么?

4

1 回答 1

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);
于 2012-10-25T14:33:42.080 回答