2016-09-20 26 views
2

私はSSH-DSSキーを使用しています。ポートは2222です。私は公開鍵/秘密鍵(peagent)とユーザ名を使用して私のマシンからwinscpを介して接続することができます。 (秘密鍵はパスフレーズなし)公開鍵がエラーなしで失敗するSFTP

しかし、私は同じことをPHPスクリプトで試しても動作しません。エラーメッセージは表示されません。 ssh2_auth_pubkey_file()blank/falseを返します。だから、スクリプトが

公開鍵認証で終わりでは

エラーをデバッグするためのいずれかの方法がありますを失敗しましたか?

公開鍵/秘密鍵は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'); 
    } 

答えて

0

サーバーへのrootアクセス権を持っている場合は、SSHデーモンを停止し、デバッグのために

ssdh -ddd 

で始めることができ、そこのエラーを監視してください。

0

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

関連する問題