踏み台ホストを使用して、プライベートサブネットで実行されている Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンスに接続したいと考えています。
簡単な説明
EC2 Linux インスタンスは、デフォルトの認証方法として SSH ユーザー名とパスワードの代わりに SSH キーペアファイルを使用します。踏み台ホストを使用して接続するには、クライアントで ssh-agent 転送を使用します。ssh-agent は、踏み台のプライベートキーを使用しなくても、管理者を踏み台から別のインスタンスに接続します。
デフォルトでは、ほとんどの Linux および macOS ディストリビューションには、ssh-agent を含む openssh-clients パッケージが含まれています。Windows ディストリビューションの場合は、PuTTY を使用して Linux インスタンスに接続し、Pageant を使用してプライベートキーを管理します。Pageant をインストールした後、PuTTY のエージェント転送オプションを使用してプライベートサブネットのインスタンスに接続できます。
重要: 安全な環境を維持するために、踏み台ホストにはプライベートキーを保管しないでください。
解決策
注: ssh-agent はメモリ内で実行されるため、新しいターミナルセッションを開くか、コンピュータを再起動するたびに次の手順を繰り返す必要があります。
前提条件: 構成に次は以下の設定が含まれていることを確認してください。
- 踏み台ホストは、仮想プライベートクラウド (VPC) のパブリックサブネットにある。
- プライベートサブネット内のインスタンスのセキュリティグループは、踏み台ホストからの SSH 接続のみを許可している。
- 踏み台ホストのセキュリティグループは、既知で信頼できる IP アドレスからのみポート TCP/22 で SSH 接続を許可している。
macOS または Linux クライアントでの ssh-agent 転送を設定する
次の手順を実行します。
-
以下のコマンドを実行して、ssh-agent をバックグラウンドで開始します。
eval $(ssh-agent)
-
以下のコマンドを実行して、SSH キーを ssh-agent に追加します。
ssh-add "/path/to/key.pem"
注: path/to/key を、ローカルマシン上の.pem ファイルへのパスに置き換えてください。ssh-agent は、SSH キーをメモリに保存します。
-
次のコマンドを実行して、ssh-agent がキーを保存していることを確認します。
ssh-add -l
注: キーが出力に表示されていることを確認します。
出力例:
# 2048 SHA256:abc123... /home/user/.ssh/my-key.pem (RSA)
-
次のコマンドを実行して、ssh-agent 転送が有効になっている踏み台ホストに接続します。
ssh -A User@Bastion_Host_IP_Address
注: User を実際のユーザー名に、Bastion_Host_IP_address を踏み台ホストの IP アドレスに置き換えてください。Amazon マシンイメージ (AMI) のデフォルトユーザー名を確認するには、「デフォルトのユーザー名」を参照してください。ssh-forwarding を使用するには、-i フラグの代わりに -A フラグを使用してください。ssh-agent を使用すると、SSH はメモリに読み込まれたキーを自動的に使用します。
-
次のコマンドを実行してプライベート Linux インスタンスに接続します。
ssh User@Private_instance_IP_address
注: User を実際のユーザー名に、Private_instance_IP_address をインスタンスの IP アドレスに置き換えてください。
Windows クライアントでエージェント転送を設定する
次の手順を実行します。
- PuTTY、Pageant、PuTTYgen をダウンロードしてインストールします。ツールをダウンロードするには、PuTTY のウェブサイトの「Download PuTTY」(PuTTY のダウンロード) を参照してください。
- PuTTY を使用してインスタンスに接続するには、PuTTYgen を使用してプライベートキーを PEM 形式から PuTTY 形式に変換します。
注: PuTTY は SSH キーに PEM 形式を使用できません。
- [スタート] メニューを選択し、Pageant を開きます。
注: デフォルトでは、Pageant はシステムトレイで最小化されて開きます。システムトレイに Pageant アイコンが表示されない場合は、タスクバーの設定を使用して追加してください。手順については、Microsoft のウェブサイトの「Windows でタスク バーをカスタマイズする」を参照してください。
- SSH キーを追加するには、Pageant アイコンのコンテキスト (右クリック) メニューを開き、[キーを追加] をクリックします。次に、プライベートキーに移動します。
注: 追加されたキーを表示するには、Pageant アイコンのコンテキスト (右クリック) メニューを開き、[キーを表示] を選択します。
- [スタート] メニューをクリックし、[すべてのプログラム] を開きます。
- [PuTTY] を選択し、次に [PuTTY] を選択します。
- [カテゴリ] で [セッション] を選択します。
- [ホスト名]に、user-name@instance-public-dns と入力して、インスタンスのパブリック DNS 名に接続します。または、user-name@instance-IPv4-address と入力してインスタンスの IPv4 アドレスに接続します。
注: user-nameを実際のユーザー名に、instance-public-dns をインスタンスのパブリック DNS に、instance-IPv4-address をインスタンスの IPv4 アドレスに置き換えてください。
- 要件に基づいて [接続タイプ] と [SSH] の値を設定します。[ポート] に、22 と入力します。
- [カテゴリ] で [接続] を展開します。
- [SSH]、[認証] の順に選択します。
- [エージェント転送を許可] をクリックします。
- [開く] をクリックします。
- インスタンスに接続するには、次のコマンドを実行します。
ssh User@Private_instance_IP_address
注: User を実際のユーザー名に、Private_instance_IP_address をインスタンスの IP アドレスに置き換えてください。