3

.pem ファイル、PHP、および phpseclib を使用して Amazon EC2 インスタンスに接続しようとしています。

この投稿で言及されていることを試しました: phpからec2へのsshアクセス

ただし、「エラー111。接続が拒否されました...」というメッセージが表示され続けます

自分のマシンから ssh と同じ .pem ファイルを使用して接続すると、エラーは発生しません。

私が使用している元の投稿のコードは次のとおりです。

include('Net/SSH2.php');
include('Crypt/RSA.php');

$key = new Crypt_RSA();

$key->loadKey(file_get_contents('/pathtokey.pem'));


$ssh = new Net_SSH2('ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com');
if (!$ssh->login('user', $key)) {
    exit('Login Failed');
}
4

2 に答える 2

4

提供されたサンプル コードをテストしたところ、Amazon EC2 Ubuntu インスタンスで動作します。

提案されているように、明らかなことを確認する必要があります。

  • ホスト名
  • ユーザー名
  • PEM ファイルのパス

それらは正しいですか?自分のマシンから接続するときに使用するものと同じものを使用していますか?

それらが同じ場合、同じマシンからコードをテストしていますか? そうでない場合、コードを実行しているホストで、アウトバウンド接続用にポート 22 が開いていますか?

于 2012-05-21T08:35:37.970 に答える
0

確認すべき明らかなことは、ポートが開いていて、ユーザーに許可されているかどうかです。

やってみてください:

wget ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com:22

問題を引き起こしているマシンから、ソケットを開くことができるかどうかを確認してください。

同じユーザー/セキュリティ設定によって呼び出されていることを確認するには、shell_exec()を使用してPHPを介してそのコマンドを実行する必要があると思います。

于 2012-05-21T02:46:36.290 に答える