EC2 Instance Connect Endpoint を使用して Amazon EC2 インスタンスに接続する
EC2 Instance Connect Endpoint を使用して、SSH または RDP をサポートする Amazon EC2 インスタンスに接続できます。
前提条件
-
EC2 Instance Connect Endpoint に接続するには、必要な IAM アクセス許可が必要です。詳細については、「ユーザーに EC2 Instance Connect エンドポイント を使用してインスタンスへ接続するためのアクセス許可」を参照してください。
-
EC2 Instance Connect Endpoint は [使用可能] (コンソール) または [
create-complete
] (AWS CLI) 状態である必要があります。VPC 用の EC2 Instance Connect エンドポイントがない場合は作成します。詳細については、「EC2 Instance Connect Endpoint の作成」を参照してください。 -
インスタンスには IPv4 アドレス (プライベートまたはパブリックのいずれか) が必要です。EC2 Instance Connect エンドポイント は 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] タブを選択します。
-
[接続タイプ] で、[EC2 Instance Connect Endpoint を使用して接続] を選択します。
-
[EC2 Instance Connect エンドポイント] については、EC2 Instance Connect エンドポイント の ID を選択します。
-
[ユーザー名] には、インスタンスの起動に使用した AMI が
ec2-user
以外のユーザー名を使用している場合は、正しいユーザー名を入力します。 -
[最大トンネル期間 (秒)] に、SSH 接続の最大許容期間を入力します。
期間は IAM ポリシーで指定されている
maxTunnelDuration
条件を満たしている必要があります。IAM ポリシーを更新するためのアクセス許可がない場合は、管理者に連絡してください。 -
[接続]を選択します。これにより、インスタンスのターミナルウィンドウが開きます。
SSH を使用した Linux インスタンスへの接続
SSH を使用して Linux インスタンスに接続し、open-tunnel
コマンドを使用してプライベートトンネルを確立できます。open-tunnel
はシングル接続またはマルチ接続モードで使用できます。
SSH を使用したインスタンスに接続するための AWS CLI の使用の詳細については、「AWS CLI を使用して接続する」を参照してください。
以下の例では OpenSSH
シングル接続
SSH と open-tunnel
コマンドを使用してインスタンスに 1 つの接続のみを許可するには
ssh
と open-tunnel-o
プロキシコマンドには、インスタンスへのプライベートトンネルを作成する open-tunnel
コマンドが含まれています。
ssh -i
my-key-pair
.pemec2-user
@i-0123456789example
\ -o ProxyCommand='aws ec2-instance-connect open-tunnel --instance-idi-0123456789example
'
内容:
-
-i
— インスタンスの起動に使用されたキーペアを指定します。 -
— インスタンスの起動に使用された AMI のユーザー名とインスタンス ID を指定します。ec2-user
@i-0123456789example
-
--instance-id
— 接続するインスタンスの ID を指定します。または、ユーザーからインスタンス ID を抽出するように%h
を指定します。
マルチ接続
1 つのインスタンスに複数の接続を許可するには、最初に open-tunnelssh
を使用して新しい TCP 接続とインスタンスへのプライベートトンネルを作成します。
SSH と open-tunnel
コマンドを使用してインスタンスへの複数の接続を許可するには
-
ローカルマシンの特定のポートで新しい TCP 接続のリスニングを開始するには、次のコマンドを実行します。
aws ec2-instance-connect open-tunnel \ --instance-id
i-0123456789example
\ --local-port8888
正常な出力
Listening for connections on port 8888.
-
新しいターミナルウィンドウで、次の
ssh
コマンドを実行して、新しい TCP 接続とインスタンスへのプライベートトンネルを作成します。ssh -i
my-key-pair
.pem ec2-user@localhost -p8888
期待される出力 — 最初のターミナルウィンドウには、以下が表示されます。
[1] Accepted new tcp connection, opening websocket tunnel.
以下が表示される可能性があります。
[1] Closing tcp connection.
AWS CLI を使用した Linux インスタンスへの接続
インスタンス ID のみがわかっている場合は、ec2-instance-connect
前提条件
AWS CLI バージョン 2 をインストールし、認証情報を使用して構成します。詳細については、AWS Command Line Interfaceユーザーガイドの「AWS CLI の最新バージョンのインストールまたは更新」および「AWS CLI の設定」を参照してください。あるいは、AWS CloudShellを開き、事前認証されたシェルで AWS CLI コマンドを実行することもできます。
インスタンス ID と EC2 Instance Connect Endpoint を使用してインスタンスに接続するには
インスタンス ID のみがわかっている場合は、ec2-instance-connectssh
コマンド、インスタンス ID、および eice
値を含む --connection-type
パラメータを指定します。
aws ec2-instance-connect ssh --instance-id
i-1234567890example
--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 Endpoint 経由でリモートデスクトッププロトコル (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-id
i-0123456789example
\ --remote-port 3389 \ --local-portany-port
-
[ダウンロード] フォルダで、ダウンロードした RDP デスクトップファイルを検索して、RDP クライアントウィンドウにドラッグします。
-
RDP デスクトップファイルを右クリックし、[編集] を選択します。
-
[Edit PC] ウィンドウの [PC name] (接続するインスタンス) に
localhost:
と入力します。ここで、local-port
はステップ 2 で指定したものと同じ値を使用します。その後、[保存] をクリックします。local-port
次の [PC の編集] ウィンドウのスクリーンショットは、Mac 上の Microsoft リモートデスクトップのものであることに注意してください。Windows クライアントを使用している場合は、ウィンドウが異なる場合があります。
-
RDP クライアントで、(先ほど設定した) PC を右クリックし、[接続] を選択してインスタンスに接続します。
-
プロンプトに従って、管理者アカウントの復号化されたパスワードを入力します。
トラブルシューティング
以下の情報は、EC2 Instance Connect Endpoint を使用してインスタンスを接続するときに発生する可能性のある問題の診断と修復に役立ちます。
インスタンスに接続できない
インスタンスに接続できない一般的な理由は次のとおりです。
-
セキュリティ グループ – EC2 Instance Connect Endpoint とインスタンスに割り当てられたセキュリティグループを確認してください。必要なセキュリティグループルールの詳細については、「EC2 Instance Connect Endpoint のセキュリティグループ」を参照してください。
-
インスタンスの状態 – インスタンスの状態が [
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