2

キーを使用しています。SSH-DSSポートは2222です。公開鍵/秘密鍵 (peagent) とユーザー名を使用して、自分のマシンから winscp 経由で接続できます。(秘密鍵はパスフレーズなし)

しかし、PHPスクリプトで同じことを試みてもうまくいきません。エラー メッセージはありません。/をssh2_auth_pubkey_file()返します。したがって、スクリプトは次のようになりますblankfalse

公開鍵認証に失敗しました

エラーをデバッグする方法はありますか?

公開/秘密鍵は puttygen で生成されます。

私が使用しているコードスニペットは次のとおりです。

    $methods = array('hostkey' => 'ssh-dss');

    $connection = ssh2_connect('sftp.hostname.com', 2222, $methods);
    if (!$connection) die('Connection failed');

    $publicKeyPath = "./pubKey-OpenSSH";
    $privateKeyPath = "./priKey.ppk";
    echo file_get_contents($publicKeyPath);
    echo "<hr />";
    echo file_get_contents($privateKeyPath);
    echo "<hr />";

    if(ssh2_auth_pubkey_file($connection, 'USERNAME', $publicKeyPath, $privateKeyPath, ""))
    {
        echo "<br /><br /><b>Public Key Authentication Successful</b>\n";
    }
    else
    {
        print_r($connection);
        die('<br /><br />Public Key Authentication Failed');
    }
4

2 に答える 2

0

秘密鍵は ppk です。を使用するには、pem または der である必要がありますssh2_auth_pubkey_file。[変換] -> [OpenSSH キーのエクスポート] に移動して、puttygen を使用してキーを適切な形式に変換できます。

于 2016-09-21T15:49:23.730 に答える