要塞ホスト経由で SSH 接続を使用して Amazon Elastic Compute Cloud (Amazon EC2) インスタンスに接続する際に問題が発生しました。この問題を解決するには、どうすればよいですか?
簡単な説明
要塞ホストを使用した SSH 経由の EC2 インスタンスへの接続をトラブルシューティングするには、次の手順を実行します。
- SSH エージェント転送を設定して、ローカルマシンから要塞ホストにログインします。
- 詳細メッセージングをオンにした要塞ホストから EC2 インスタンスに接続します。
- SSH クライアントからの出力メッセージを使用して、問題を特定し、トラブルシューティングします。ローカルマシンから要塞ホストへの接続のトラブルシューティングから始めます。その後、要塞ホストから EC2 インスタンスへの接続をトラブルシューティングします。
解決方法
SSH エージェント転送を設定して、ローカルマシンから要塞ホストにログインする
1. EC2 インスタンスおよび要塞ホストの 1 つまたは複数の秘密キーをローカルマシンの ssh-agent に追加します。次のコマンド例では、private-key.pem を秘密キーの名前に置き換えます。
$ ssh-add private-key.pem
次のコマンドを実行して、ssh-agent でキーが使用できることを確認します。
$ ssh-add -L
2. 次のコマンドを実行して、詳細メッセージングをオンにするとともに、-A オプションを使用して要塞ホストに接続します。次のコマンド例では、ec2-user をユーザー名に置き換えます。192.0.2.0 を要塞ホストの適切なパブリック IP アドレスに置き換えます。パブリック IP アドレスの代わりにパブリック DNS エントリを使用することもできます。
$ ssh -v –A ec2-user@192.0.2.0
重要: -A オプションは、ssh-agent 転送を有効にします。エージェント転送は、トラブルシューティングのためにのみ使用してください。転送により、ローカル ssh-agent はパブリックキーのチャレンジに応答できます。これには、要塞ホストから EC2 インスタンスに接続する場合も含まれます。エージェント転送を設定すると、要塞ホストにソケットファイルが作成されます。ソケットファイルは、キーを EC2 インスタンスに転送するメカニズムとして機能します。ファイルを変更できる権限を有する、要塞ホスト上の別のユーザーは、このキーを使用してお客様として認証を行うことができます。要塞ホストを使用して定期的に (トラブルシューティング以外で) インスタンスに接続する場合は、ProxyCommand または類似の方法を使用します。
詳細メッセージングをオンにした状態で、要塞ホストから EC2 インスタンスに接続する
要塞ホストに接続した後、次のコマンドを実行して、詳細メッセージングをオンにするとともに、SSH を使用して EC2 インスタンスに接続します。次のコマンド例では、ec2-user をユーザー名に置き換えます。192.0.2.0 を要塞ホストの適切なパブリック IP アドレスに置き換えます。パブリック IP アドレスの代わりにパブリック DNS エントリを使用することもできます。
$ ssh -v ec2-user@192.0.2.0
注: 前述の 2 つのコマンドでは、明示的にキーを指定する必要はありません。ssh-agent は、成功するまで、エージェントにロードされたすべてのキーを順番に試行します。インスタンスは、接続試行が 5 回失敗した後、接続を終了します。したがって、エージェントが持つキーの数が 5 個以下であることを確認してください。各管理者には 1 つのキーが必要です。そのため、ほとんどのデプロイについて、これが問題になることはほとんどありません。ssh-agent でキーを管理する方法の詳細については、man ssh-agent コマンドを実行してください。
ローカルマシンから要塞ホストへの接続をトラブルシューティングする
ローカルマシンから要塞ホストへの接続に問題がある場合は、次の手順を実行します。
要塞ホストから EC2 インスタンスへの接続をトラブルシューティングする
要塞ホストから EC2 インスタンスに接続する際に問題が発生した場合は、次の手順を実行します。