EC2 Instance Connect エンドポイントを使用して Amazon EC2 インスタンスに接続する
EC2 Instance Connect エンドポイントを使用して、SSH または RDP をサポートする Amazon EC2 インスタンスに接続できます。
前提条件
-
EC2 Instance Connect エンドポイントに接続するには、必要な IAM アクセス許可が必要です。詳細については、「ユーザーに EC2 Instance Connect エンドポイントを使用してインスタンスへ接続するためのアクセス許可」を参照してください。
-
EC2 Instance Connect エンドポイントは、次のいずれかの状態である必要があります。
-
新しいエンドポイントの場合、create-complete
-
変更中の既存のエンドポイントの場合、update-in-progress、update-complete、または update-failed エンドポイントを変更すると、ステータスが update-complete に変わるまで元の設定が引き続き使用されます。
VPC に EC2 Instance Connect エンドポイントがない場合は作成できます。詳細については、「EC2 Instance Connect エンドポイントの作成」を参照してください。
-
-
EC2 Instance Connect エンドポイントの IP アドレスタイプは、インスタンスの IP アドレスタイプと互換性がある必要があります。エンドポイントの IP アドレスタイプがデュアルスタックの場合、IPv4 アドレスと IPv6 アドレスの両方で機能します。
-
(Linux インスタンス) Amazon EC2 コンソールを使用してインスタンスに接続する、または CLI を使用して接続し、EC2 Instance Connect にエフェメラルキーを処理させるには、インスタンスに EC2 Instance Connect がインストールされている必要があります。詳細については、「EC2 Instance Connect のインストール」を参照してください。
-
インスタンスのセキュリティグループで EC2 Instance Connect エンドポイント からのインバウンド SSH トラフィックが許可されていることを確認します。詳細については、「ターゲットインスタンスセキュリティグループのルール」を参照してください。
接続オプション
Amazon EC2 コンソールを使用した Linux インスタンスへの接続
インスタンスへの接続は、次のように Amazon EC2 コンソールのブラウザベースのクライアント) を使用して実行することができます。
Amazon EC2 コンソールを使用して Linux インスタンスに接続するには
-
Amazon EC2 コンソールの https://console.aws.amazon.com/ec2/
を開いてください。 -
ナビゲーションペインで、[インスタンス] を選択してください。
-
インスタンスを選択してから、[接続] 選択してください。
-
[EC2 Instance Connect] タブを選択してください。
-
[接続タイプ] で、[プライベート IP を使用して接続] を選択します。
-
[プライベート IPv4 アドレス] または [IPv6 アドレス] を選択します。これらのオプションは、インスタンスに割り当てられた IP アドレスに基づいて使用できます。オプションがグレー表示されている場合、インスタンスにはそのタイプの IP アドレスが割り当てられていません。
-
[EC2 Instance Connect エンドポイント] については、EC2 Instance Connect エンドポイント の ID を選択してください。
注記
EC2 Instance Connect エンドポイントは、前のステップで選択した IP アドレスと互換性がある必要があります。エンドポイントの IP アドレスタイプがデュアルスタックの場合、IPv4 アドレスと IPv6 アドレスの両方で機能します。詳細については、「EC2 Instance Connect エンドポイントの作成」を参照してください。
-
[ユーザー名] には、インスタンスの起動に使用した AMI が
ec2-user以外のユーザー名を使用している場合は、正しいユーザー名を入力してください。 -
[最大トンネル期間 (秒)] に、SSH 接続の最大許容期間を入力してください。
期間は IAM ポリシーで指定されている
maxTunnelDuration条件を満たしている必要があります。IAM ポリシーを更新するためのアクセス許可がない場合は、管理者に連絡してください。 -
[接続]を選択してください。これにより、インスタンスのターミナルウィンドウが開きます。
SSH を使用した Linux インスタンスへの接続
SSH を使用して Linux インスタンスに接続し、open-tunnel コマンドを使用してプライベートトンネルを確立できます。open-tunnel はシングル接続またはマルチ接続モードで使用できます。インスタンス ID、プライベート IPv4 アドレス、または IPv6 アドレスを指定できます。
SSH を使用したインスタンスに接続するための AWS CLI の使用の詳細については、「AWS CLI を使用して接続する」を参照してください。
以下の例では OpenSSH
シングル接続
SSH と open-tunnel コマンドを使用してインスタンスに 1 つの接続のみを許可するには
ssh と open-tunnel AWS CLI コマンドを次のように使用します。-o プロキシコマンドには、インスタンスへのプライベートトンネルを作成する open-tunnel コマンドが含まれています。
ssh -imy-key-pair.pemec2-user@i-1234567890abcdef0\ -o ProxyCommand='aws ec2-instance-connect open-tunnel --instance-idi-1234567890abcdef0'
内容:
-
-i— インスタンスの起動に使用されたキーペアを指定します。 -
— インスタンスの起動に使用された AMI のユーザー名とインスタンス ID を指定します。IPv6 アドレスを持つインスタンスの場合、インスタンス ID ではなく IPv6 アドレスを指定する必要があります。ec2-user@i-1234567890abcdef0 -
--instance-id— 接続するインスタンスの ID を指定します。または、ユーザーからインスタンス ID を抽出するように%hを指定します。IPv6 アドレスを持つインスタンスの場合、--instance-idをi-1234567890abcdef0--private-ip-addressに置き換えます。2001:db8::1234:5678:1.2.3.4
マルチ接続
1 つのインスタンスに複数の接続を許可するには、最初に open-tunnel AWS CLI コマンドを実行して新しい TCP 接続のリスニングを開始し、次に ssh を使用して新しい TCP 接続とインスタンスへのプライベートトンネルを作成します。
SSH と open-tunnel コマンドを使用してインスタンスへの複数の接続を許可するには
-
ローカルマシンの特定のポートで新しい TCP 接続のリスニングを開始するには、次のコマンドを実行します。
aws ec2-instance-connect open-tunnel \ --instance-idi-1234567890abcdef0\ --local-port8888正常な出力:
Listening for connections on port 8888. -
新しいターミナルウィンドウで、次の
sshコマンドを実行して、新しい TCP 接続とインスタンスへのプライベートトンネルを作成します。ssh -imy-key-pair.pem ec2-user@localhost -p8888期待される出力 – 最初のターミナルウィンドウには、以下が表示されます。
[1] Accepted new tcp connection, opening websocket tunnel.以下が表示される可能性があります。
[1] Closing tcp connection.
AWS CLI を使用してインスタンス ID で Linux インスタンスに接続する
インスタンス ID のみを知っている場合、ec2-instance-connect ssh の AWS CLI コマンドを使用して SSH クライアントでインスタンスに接続できます。詳細については、「AWS CLI を使用して接続する」を参照してください。
前提条件
-
AWS CLI バージョン 2 をインストールし、認証情報を使用して構成します。詳細については、AWS Command Line Interfaceユーザーガイドの「AWS CLI の最新バージョンのインストールまたは更新」および「AWS CLI の設定」を参照してください。
-
あるいは、AWS CloudShellを開き、事前認証されたシェルで AWS CLI コマンドを実行することもできます。
インスタンス ID と EC2 Instance Connect エンドポイントを使用してインスタンスに接続するには
インスタンス ID のみを知っている場合、ec2-instance-connect ssh の CLI コマンドを使用し、ssh コマンド、インスタンス ID、および eice 値を指定した --connection-type パラメータを指定して、EC2 Instance Connect エンドポイントを使用します。インスタンスに IPv6 アドレスのみがある場合は、IPv6 アドレスとともに --instance-ip パラメータも含める必要があります。
-
インスタンスにプライベート IPv4 アドレスがある場合 (IPv6 アドレスも可能)、次のコマンドとパラメータを使用します。
aws ec2-instance-connect ssh \ --instance-idi-1234567890example\ --os-userec2-user\ --connection-type eice -
インスタンスに IPv6 アドレスのみがある場合は、IPv6 アドレスとともに
--instance-ipパラメータを含めます。aws ec2-instance-connect ssh \ --instance-idi-1234567890example\ --instance-ip2001:db8::1234:5678:1.2.3.4\ --os-userec2-user\ --connection-type eice
ヒント
エラーが発生した場合は、AWS CLI バージョン 2 を使用していることを確認してください。ssh パラメータは、AWS CLI バージョン 2 でのみ使用できます。詳細については、「AWS Command Line Interface ユーザーガイド」の「AWS CLI バージョン 2 について」を参照してください。
RDP を使用した Windows インスタンスへの接続
EC2 Instance Connectエンドポイント 経由でリモートデスクトッププロトコル (RDP) を使用して、パブリック IPv4 アドレスまたはパブリック DNS 名を使用しなくても Windows インスタンスに接続できます。
RDP クライアントを使用して Windows インスタンスに接続するには
-
「RDP を使用した Windows インスタンスへの接続」のステップ 1~8 を実行します。ステップ 8 で RDP デスクトップファイルをダウンロードすると、[接続できません] というメッセージが表示されます。これは、インスタンスにパブリック IP アドレスがないためです。
-
次のコマンドを実行して、インスタンスがある VPC へのプライベートトンネルを確立します。RDP がデフォルトでポート 3389 を使用しているため、
--remote-portは3389になります。aws ec2-instance-connect open-tunnel \ --instance-idi-1234567890abcdef0\ --remote-port 3389 \ --local-portany-port -
[ダウンロード] フォルダで、ダウンロードした RDP デスクトップファイルを検索して、RDP クライアントウィンドウにドラッグします。
-
RDP デスクトップファイルを右クリックし、[編集] を選択してください。
-
[PC編集] ウィンドウの [PC名] (接続するインスタンス) に
localhost:と入力してください。ここで、local-portはステップ 2 で指定したものと同じ値を使用します。その後、[保存] をクリックしてください。local-port次の [PC の編集] ウィンドウのスクリーンショットは、Mac 上の Microsoft リモートデスクトップのものであることに注意してください。Windows クライアントを使用している場合は、ウィンドウが異なる場合があります。
-
RDP クライアントで、(先ほど設定した) PC を右クリックし、[接続] を選択してインスタンスに接続します。
-
プロンプトに従って、管理者アカウントの復号化されたパスワードを入力してください。
トラブルシューティング
以下の情報は、EC2 Instance Connect エンドポイントを使用してインスタンスを接続するときに発生する可能性のある問題の診断と修復に役立ちます。
インスタンスに接続できない
インスタンスに接続できない一般的な理由は次のとおりです。
-
セキュリティ グループ – EC2 Instance Connect エンドポイントとインスタンスに割り当てられたセキュリティグループを確認してください。必要なセキュリティグループルールの詳細については、「EC2 Instance Connect エンドポイントのセキュリティグループ」を参照してください。
-
インスタンスの状態 – インスタンスの状態が [
running] であることを確認します。 -
キーペア — 接続に使用しているコマンドにプライベートキーが必要な場合は、インスタンスにパブリックキーと、対応するプライベートキーがあることを確認します。
-
IAM アクセス許可 — 必要な IAM アクセス許可があることを確認します。詳細については、「EC2 Instance Connect エンドポイント を使用するためのアクセス許可の付与」を参照してください。
Linux インスタンスのトラブルシューティングのさらなるヒントについては、「Amazon EC2 Linux インスタンスへの接続に関する問題のトラブルシューティング」を参照してください。Windows インスタンスのトラブルシューティングのヒントについては、「Amazon EC2 Windows インスタンスへの接続に関する問題のトラブルシューティング」を参照してください。
ErrorCode: AccessDeniedException
AccessDeniedException エラーが発生し、maxTunnelDuration 条件が IAM ポリシーで指定されている場合は、インスタンスに接続するときに必ず --max-tunnel-duration パラメータを指定してください。このパラメータの詳細については、「AWS CLI コマンドリファレンス」の「open-tunnel」を参照してください。