PHP ssh2_auth_pubkey_file不使用加密的私钥

时间:2012-10-25 08:35:56

标签: php sftp libssh2

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

1 个答案:

答案 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);