EC2 Instance Connect Endpoint を使用して Amazon EC2 インスタンスに接続する - Amazon Elastic Compute Cloud

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 インスタンスに接続するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

  3. インスタンスを選択してから、[接続] 選択します。

  4. [EC2 Instance Connect] タブを選択します。

  5. [接続タイプ] で、[EC2 Instance Connect Endpoint を使用して接続] を選択します。

  6. [EC2 Instance Connect エンドポイント] については、EC2 Instance Connect エンドポイント の ID を選択します。

  7. [ユーザー名] には、インスタンスの起動に使用した AMI が ec2-user 以外のユーザー名を使用している場合は、正しいユーザー名を入力します。

  8. [最大トンネル期間 (秒)] に、SSH 接続の最大許容期間を入力します。

    期間は IAM ポリシーで指定されている maxTunnelDuration 条件を満たしている必要があります。IAM ポリシーを更新するためのアクセス許可がない場合は、管理者に連絡してください。

  9. [接続]を選択します。これにより、インスタンスのターミナルウィンドウが開きます。

SSH を使用した Linux インスタンスへの接続

SSH を使用して Linux インスタンスに接続し、open-tunnel コマンドを使用してプライベートトンネルを確立できます。open-tunnel はシングル接続またはマルチ接続モードで使用できます。

SSH を使用したインスタンスに接続するための AWS CLI の使用の詳細については、「AWS CLI を使用して接続する」を参照してください。

以下の例では OpenSSH を使用しています。プロキシモードをサポートする他の SSH クライアントを使用できます。

シングル接続

SSH と open-tunnel コマンドを使用してインスタンスに 1 つの接続のみを許可するには

ssh と open-tunnel AWS CLI コマンドを次のように使用します。-o プロキシコマンドには、インスタンスへのプライベートトンネルを作成する open-tunnel コマンドが含まれています。

ssh -i my-key-pair.pem ec2-user@i-0123456789example \ -o ProxyCommand='aws ec2-instance-connect open-tunnel --instance-id i-0123456789example'

内容:

  • -i — インスタンスの起動に使用されたキーペアを指定します。

  • ec2-user@i-0123456789example — インスタンスの起動に使用された AMI のユーザー名とインスタンス ID を指定します。

  • --instance-id — 接続するインスタンスの ID を指定します。または、ユーザーからインスタンス ID を抽出するように %h を指定します。

マルチ接続

1 つのインスタンスに複数の接続を許可するには、最初に open-tunnel AWS CLI コマンドを実行して新しい TCP 接続のリスニングを開始し、次に ssh を使用して新しい TCP 接続とインスタンスへのプライベートトンネルを作成します。

SSH と open-tunnel コマンドを使用してインスタンスへの複数の接続を許可するには
  1. ローカルマシンの特定のポートで新しい TCP 接続のリスニングを開始するには、次のコマンドを実行します。

    aws ec2-instance-connect open-tunnel \ --instance-id i-0123456789example \ --local-port 8888

    正常な出力

    Listening for connections on port 8888.
  2. 新しいターミナルウィンドウで、次の ssh コマンドを実行して、新しい TCP 接続とインスタンスへのプライベートトンネルを作成します。

    ssh -i my-key-pair.pem ec2-user@localhost -p 8888

    期待される出力 — 最初のターミナルウィンドウには、以下が表示されます。

    [1] Accepted new tcp connection, opening websocket tunnel.

    以下が表示される可能性があります。

    [1] Closing tcp connection.

AWS CLI を使用した Linux インスタンスへの接続

インスタンス ID のみがわかっている場合は、ec2-instance-connect AWS CLI コマンドを使用すると、SSH クライアントを使用してインスタンスに接続できます。ec2-instance-connect コマンドの使用方法の詳細については、「AWS CLI を使用して接続する」を参照してください。

前提条件

AWS CLI バージョン 2 をインストールし、認証情報を使用して構成します。詳細については、AWS Command Line Interfaceユーザーガイドの「AWS CLI の最新バージョンのインストールまたは更新」および「AWS CLI の設定」を参照してください。あるいは、AWS CloudShellを開き、事前認証されたシェルで AWS CLI コマンドを実行することもできます。

インスタンス ID と EC2 Instance Connect Endpoint を使用してインスタンスに接続するには

インスタンス ID のみがわかっている場合は、ec2-instance-connect CLI コマンドを使用し、ssh コマンド、インスタンス ID、および eice 値を含む --connection-type パラメータを指定します。

aws ec2-instance-connect ssh --instance-id i-1234567890example --os-user ec2-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 インスタンスに接続するには
  1. RDP を使用した Windows インスタンスへの接続」のステップ 1~8 を実行します。ステップ 8 で RDP デスクトップファイルをダウンロードすると、[接続できません] というメッセージが表示されます。これは、インスタンスにパブリック IP アドレスがないためです。

  2. 次のコマンドを実行して、インスタンスがある VPC へのプライベートトンネルを確立します。RDP がデフォルトでポート 3389 を使用しているため、--remote-port は 3389 になります。

    aws ec2-instance-connect open-tunnel \ --instance-id i-0123456789example \ --remote-port 3389 \ --local-port any-port
  3. [ダウンロード] フォルダで、ダウンロードした RDP デスクトップファイルを検索して、RDP クライアントウィンドウにドラッグします。

  4. RDP デスクトップファイルを右クリックし、[編集] を選択します。

  5. [Edit PC] ウィンドウの [PC name] (接続するインスタンス) に localhost:local-port と入力します。ここで、local-port はステップ 2 で指定したものと同じ値を使用します。その後、[保存] をクリックします。

    次の [PC の編集] ウィンドウのスクリーンショットは、Mac 上の Microsoft リモートデスクトップのものであることに注意してください。Windows クライアントを使用している場合は、ウィンドウが異なる場合があります。

    PC 名フィールドに「localhost:5555」という例が記載された RDP クライアント。
  6. RDP クライアントで、(先ほど設定した) PC を右クリックし、[接続] を選択してインスタンスに接続します。

  7. プロンプトに従って、管理者アカウントの復号化されたパスワードを入力します。

トラブルシューティング

以下の情報は、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」を参照してください。