- 締切済み
phpのssh2_auth_pubkey_file
linuxで自宅サーバーを建てています。 この度、phpで外部のsshサーバーへphpでアクセスする必要に迫られたので、やってはみたのですが、どうにもうまくいきません。。 phpinfo()では、 SSH2 support enabled extension version 0.11.0-dev libssh2 version 1.0 banner SSH-2.0-libssh2_1.0 remote forwarding enabled hostbased auth enabled polling support enabled publickey subsystem enabled と、sshは使えるようになっています。 実際にスクリプト内で $conn = ssh2_connect($host, 22, array("hostkey" => "ssh-rsa, ssh-dss")); を実行すると、trueが帰ってきます。 ですがそのあとに、 $pub = ssh2_auth_pubkey_file($conn, "username", "public.ppk", "private.ppk", "path"); をスクリプト内で実行すると、 Warning: ssh2_auth_pubkey_file() [function.ssh2-auth-pubkey-file]: Authentication failed for username using public key in /var/www/html/user/test.php on line 50 とエラーが出ます。結果はもちろんfalseになります。 public.ppkのエラーのように見えるのですが、、、WinSCPというソフトを使い、public.ppkとprivate.ppkもそのまま同じものを使って接続ができます。 ググってはみたのですが、どの時点でエラーになっているのか見当がつきません。。。 お分かりの方があられましたらどうぞお知恵をお貸し下さい。よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
そのプログラムはどうやって作動していますか? ブラウザから叩くような感じだと、 実行ユーザがapacheになってしまい、そのままの設定ではユーザの秘密鍵を使えないと思いますよ。 具体的には http://www.doyouphp.jp/tips/tips_ssh2.shtml の下半分くらいに解決策が説明されています。