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 に答える