踏み台ホストを使用して、プライベートサブネットで実行されている Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンスに接続したいと考えています。
簡単な説明
EC2 Linux インスタンスは、デフォルトの認証方法として SSH キーペアファイルを使用します。キーペアファイルを使用すると、SSH のユーザー名とパスワードが不要になります。安全な環境を維持するために、踏み台ホストにはプライベートキーを保管しないでください。踏み台ホストを使用して接続するには、クライアントで ssh-agent 転送を使用します。ssh-agent を使用すると、管理者はプライベートキーを踏み台に保存しなくても、踏み台から別のインスタンスに接続できます。
解決策
前提条件
- インターネット経由でホストにアクセスするには、踏み台ホストが VPC のパブリックサブネットに存在している必要があります。
- 踏み台ホストからの SSH 接続のみを受け入れるように、プライベート Linux インスタンスのセキュリティグループを設定します。
- 踏み台ホストのセキュリティグループを、既知で信頼できる IP アドレスのみからの SSH 接続 (TCP/22) を許可するように設定します。
macOS または Linux クライアントでの ssh-agent 転送を設定する
注: openssh-clients パッケージは、ほとんどの Linux および macOS ディストリビューションにデフォルトでインストールされ、ssh-agent が含まれています。
1. 以下のコマンドを実行して、ssh-agent をバックグラウンドで起動します。ssh-agent は、SSH キーをメモリに保存します。
# eval $(ssh-agent)
2. 以下のコマンドを実行して、SSH キーを ssh-agent に追加します。
# ssh-add "/path/to/key.pem"
3. 以下のコマンドを実行して、キーが ssh-agent に追加されていることを確認します。
# ssh-add -l
4. 以下のコマンドを実行して、踏み台ホストに接続します。以下のコマンドで、ユーザーと Bastion_Host_****IP_address をユースケースに適した値に置き換えてください。
# ssh -A User@Bastion_Host_IP_Address
注: 直前のコマンドには必ず -A フラグを含めてください。-A フラグを追加しないと、キーがメモリに追加されないため、ssh-agent 転送は機能しません。SSH キーをメモリに追加した後は、-i フラグを使用して SSH キー自体を指定する必要はありません。これは、SSH が ssh-agent に保存されているすべての SSH キーを自動的に使用しようとするためです。
5. 踏み台ホストに接続したら、以下のコマンドを実行してプライベート Linux インスタンスに接続します。以下のコマンドで、ユーザーと Private_instance_IP_address をユースケースに適した値に置き換えてください。
# ssh User@Private_instance_IP_address
プライベートインスタンスと一致するプライベートキーが ssh-agent にロードされると、接続は成功します。
Windows クライアントで SSH エージェント転送を設定する
PuTTY (Windows 用の無料の SSH クライアント) を使用して、Windows から Linux VPC インスタンスに接続できます。SSH エージェント機能を利用するには、Pageant (SSH 認証エージェント) を使用してください。Pageant はプライベートキーをメモリに保持します。Pageant をインストールすると、PuTTY のエージェント転送オプションを使用してプライベートサブネットのインスタンスに接続できます。
1. PuTTY ダウンロードページから PuTTY と Pageant をダウンロードしてインストールします。
2. PuTTY は SSH 鍵の PEM 形式をネイティブにサポートしていません。PuTTY を使用してインスタンスに接続するには、PuTTYgen を使用してプライベートキーを PEM 形式から PuTTY 形式に変換します。PuTTYgen は PuTTY ダウンロードページから入手できます。詳細については、「](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html#putty-private-key)PuTTYgen を使用してプライベートキーを変換する[ 」を参照してください。
3. Pageant を開いて、プライベートキーを追加します。PuTTY 形式のキーを Pageant にインポートするには、[スタート] メニューから Pageant アプリケーションを起動します。デフォルトでは、Pageant はシステムトレイで最小化されて開きます。
**注:**システムトレイに Pageant アイコンが表示されない場合は、タスクバーの設定を使用して追加してください。詳細については、support.microsoft.com ウェブサイトの「タスクバー通知領域のカスタマイズ」を参照してください。
4. SSH キーを追加するには、システムトレイの Pageant アイコンを右クリックし、[キーを追加] を選択します。追加されたキーを表示するには、システムトレイの Pageant アイコンを右クリックし、[キーを表示] を選択します。
5. 以下の手順を実行して、PuTTY SSH セッションを開始し、[エージェント転送を許可] をオンにします。
- [スタート] メニューから、[すべてのプログラム]、[PuTTY]、[PuTTY] を選択します。
- [カテゴリ] ペインで、[セッション] を選択します。
- [ホスト名] フィールドで、次のいずれかを実行します。
インスタンスのパブリック DNS 名を使用して接続するには、user-name@instance-public-dns と入力します。
インスタンスの IPv4 アドレスを使用して接続するには、user-name@instance-IPv4-address と入力します。
- [接続タイプ]、[SSH] を選択し、[ポート] の値が 22 であることを確認します。
- [カテゴリ] ペインで、[接続]、[SSH] を展開し、[認証] を選択します。
- [エージェント転送を許可] を選択します。
- [開く] を選択します。
6. 踏み台に SSH プライベートキーがなくても、踏み台から VPC 内の任意のインスタンスに接続できます。他のインスタンスに接続するには、以下のコマンドを使用します。以下のコマンドで、ユーザーと Private_instance_IP_address をユースケースに適した値に置き換えてください。
# ssh User@Private_instance_IP_address
プライベートインスタンスと一致するプライベートキーが Pageant にロードされると、接続は成功します。