

# EC2 Instance Connect エンドポイントを使用して Amazon EC2 インスタンスに接続する
<a name="connect-using-eice"></a>

EC2 Instance Connect エンドポイントを使用して、SSH または RDP をサポートする Amazon EC2 インスタンスに接続できます。

**前提条件**
+ EC2 Instance Connect エンドポイントに接続するには、必要な IAM アクセス許可が必要です。詳細については、「[ユーザーに EC2 Instance Connect エンドポイントを使用してインスタンスへ接続するためのアクセス許可](permissions-for-ec2-instance-connect-endpoint.md#iam-OpenTunnel)」を参照してください。
+ EC2 Instance Connect エンドポイントは、次のいずれかの状態である必要があります。
  + 新しいエンドポイントの場合、**create-complete**
  + 変更中の既存のエンドポイントの場合、**update-in-progress**、**update-complete**、または **update-failed** エンドポイントを変更すると、ステータスが **update-complete** に変わるまで元の設定が引き続き使用されます。

    VPC に EC2 Instance Connect エンドポイントがない場合は作成できます。詳細については、「[EC2 Instance Connect エンドポイントの作成](create-ec2-instance-connect-endpoints.md)」を参照してください。
+ EC2 Instance Connect エンドポイントの IP アドレスタイプは、インスタンスの IP アドレスタイプと互換性がある必要があります。エンドポイントの IP アドレスタイプがデュアルスタックの場合、IPv4 アドレスと IPv6 アドレスの両方で機能します。
+ (Linux インスタンス) Amazon EC2 コンソールを使用してインスタンスに接続する、または CLI を使用して接続し、EC2 Instance Connect にエフェメラルキーを処理させるには、インスタンスに EC2 Instance Connect がインストールされている必要があります。詳細については、「[EC2 Instance Connect のインストール](ec2-instance-connect-set-up.md)」を参照してください。
+ インスタンスのセキュリティグループで EC2 Instance Connect エンドポイント からのインバウンド SSH トラフィックが許可されていることを確認します。詳細については、「[ターゲットインスタンスセキュリティグループのルール](eice-security-groups.md#resource-security-group-rules)」を参照してください。

**Topics**
+ [Amazon EC2 コンソールを使用した Linux インスタンスへの接続](#connect-using-the-ec2-console)
+ [SSH を使用した Linux インスタンスへの接続](#eic-connect-using-ssh)
+ [AWS CLI を使用してインスタンス ID で Linux インスタンスに接続する](#eic-connect-using-cli)
+ [RDP を使用した Windows インスタンスへの接続](#eic-connect-using-rdp)
+ [トラブルシューティング](#troubleshoot-eice)

## Amazon EC2 コンソールを使用した Linux インスタンスへの接続
<a name="connect-using-the-ec2-console"></a>

インスタンスへの接続は、次のように Amazon EC2 コンソールのブラウザベースのクライアント) を使用して実行することができます。

**Amazon EC2 コンソールを使用して Linux インスタンスに接続するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択してから、**[接続]** 選択してください。

1. **[EC2 Instance Connect]** タブを選択してください。

1. **[接続タイプ]** で、**[プライベート IP を使用して接続]** を選択します。

1. **[プライベート IPv4 アドレス]** または **[IPv6 アドレス]** を選択します。これらのオプションは、インスタンスに割り当てられた IP アドレスに基づいて使用できます。オプションがグレー表示されている場合、インスタンスにはそのタイプの IP アドレスが割り当てられていません。

1. **[EC2 Instance Connect エンドポイント]** については、EC2 Instance Connect エンドポイント の ID を選択してください。
**注記**  
EC2 Instance Connect エンドポイントは、前のステップで選択した IP アドレスと互換性がある必要があります。エンドポイントの IP アドレスタイプがデュアルスタックの場合、IPv4 アドレスと IPv6 アドレスの両方で機能します。詳細については、「[EC2 Instance Connect エンドポイントの作成](create-ec2-instance-connect-endpoints.md)」を参照してください。

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

1. **[最大トンネル期間 (秒)]** に、SSH 接続の最大許容期間を入力してください。

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

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

## SSH を使用した Linux インスタンスへの接続
<a name="eic-connect-using-ssh"></a>

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

SSH を使用したインスタンスに接続するための AWS CLI の使用の詳細については、「[AWS CLI を使用して接続する](ec2-instance-connect-methods.md#connect-linux-inst-eic-cli-ssh)」を参照してください。

以下の例では [OpenSSH](https://www.openssh.com/) を使用しています。プロキシモードをサポートする他の SSH クライアントを使用できます。

### シングル接続
<a name="ssh-single-connection"></a>

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

`ssh` と [https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/open-tunnel.html](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/open-tunnel.html) AWS CLI コマンドを次のように使用します。`-o` プロキシコマンドには、インスタンスへのプライベートトンネルを作成する `open-tunnel` コマンドが含まれています。

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

内容:
+ `-i` — インスタンスの起動に使用されたキーペアを指定します。
+ `ec2-user@i-1234567890abcdef0` — インスタンスの起動に使用された AMI のユーザー名とインスタンス ID を指定します。IPv6 アドレスを持つインスタンスの場合、インスタンス ID ではなく IPv6 アドレスを指定する必要があります。
+ `--instance-id` — 接続するインスタンスの ID を指定します。または、ユーザーからインスタンス ID を抽出するように `%h` を指定します。IPv6 アドレスを持つインスタンスの場合、`--instance-id i-1234567890abcdef0` を `--private-ip-address 2001:db8::1234:5678:1.2.3.4` に置き換えます。

### マルチ接続
<a name="ssh-multi-connection"></a>

1 つのインスタンスに複数の接続を許可するには、最初に [https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/open-tunnel.html](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/open-tunnel.html) AWS CLI コマンドを実行して新しい TCP 接続のリスニングを開始し、次に `ssh` を使用して新しい TCP 接続とインスタンスへのプライベートトンネルを作成します。

**SSH と `open-tunnel` コマンドを使用してインスタンスへの複数の接続を許可するには**

1. ローカルマシンの特定のポートで新しい TCP 接続のリスニングを開始するには、次のコマンドを実行します。

   ```
   aws ec2-instance-connect open-tunnel \
       --instance-id i-1234567890abcdef0 \
       --local-port 8888
   ```

   正常な出力:

   ```
   Listening for connections on port 8888.
   ```

1. *新しいターミナルウィンドウ*で、次の `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 を使用してインスタンス ID で Linux インスタンスに接続する
<a name="eic-connect-using-cli"></a>

インスタンス ID のみを知っている場合、[ec2-instance-connect ssh](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/ssh.html) の AWS CLI コマンドを使用して SSH クライアントでインスタンスに接続できます。詳細については、「[AWS CLI を使用して接続する](ec2-instance-connect-methods.md#connect-linux-inst-eic-cli-ssh)」を参照してください。

**前提条件**
+ AWS CLI バージョン 2 をインストールし、認証情報を使用して構成します。詳細については、*AWS Command Line Interfaceユーザーガイド*の「[AWS CLI の最新バージョンのインストールまたは更新](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」および「[AWS CLI の設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)」を参照してください。
+ あるいは、AWS CloudShellを開き、事前認証されたシェルで AWS CLI コマンドを実行することもできます。

**インスタンス ID と EC2 Instance Connect エンドポイントを使用してインスタンスに接続するには**  
インスタンス ID のみを知っている場合、[ec2-instance-connect ssh](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/ssh.html) の CLI コマンドを使用し、`ssh` コマンド、インスタンス ID、および `eice` 値を指定した `--connection-type` パラメータを指定して、EC2 Instance Connect エンドポイントを使用します。インスタンスに IPv6 アドレスのみがある場合は、IPv6 アドレスとともに `--instance-ip` パラメータも含める必要があります。
+ インスタンスにプライベート IPv4 アドレスがある場合 (IPv6 アドレスも可能)、次のコマンドとパラメータを使用します。

  ```
  aws ec2-instance-connect ssh \
      --instance-id i-1234567890example \
      --os-user ec2-user \
      --connection-type eice
  ```
+ インスタンスに IPv6 アドレスのみがある場合は、IPv6 アドレスとともに `--instance-ip` パラメータを含めます。

  ```
  aws ec2-instance-connect ssh \
      --instance-id i-1234567890example \
      --instance-ip 2001:db8::1234:5678:1.2.3.4 \
      --os-user ec2-user \
      --connection-type eice
  ```

**ヒント**  
エラーが発生した場合は、AWS CLI バージョン 2 を使用していることを確認してください。`ssh` パラメータは、AWS CLI バージョン 2 でのみ使用できます。詳細については、「*AWS Command Line Interface ユーザーガイド*」の「[AWS CLI バージョン 2 について](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html#welcome-versions-v2)」を参照してください。

## RDP を使用した Windows インスタンスへの接続
<a name="eic-connect-using-rdp"></a>

EC2 Instance Connectエンドポイント 経由でリモートデスクトッププロトコル (RDP) を使用して、パブリック IPv4 アドレスまたはパブリック DNS 名を使用しなくても Windows インスタンスに接続できます。

**RDP クライアントを使用して Windows インスタンスに接続するには**

1. 「[RDP を使用した Windows インスタンスへの接続](connect-rdp.md)」のステップ 1～8 を実行します。ステップ 8 で RDP デスクトップファイルをダウンロードすると、**[接続できません]** というメッセージが表示されます。これは、インスタンスにパブリック IP アドレスがないためです。

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

   ```
   aws ec2-instance-connect open-tunnel \
       --instance-id i-1234567890abcdef0 \
       --remote-port 3389 \
       --local-port any-port
   ```

1. **[ダウンロード]** フォルダで、ダウンロードした RDP デスクトップファイルを検索して、RDP クライアントウィンドウにドラッグします。

1. RDP デスクトップファイルを右クリックし、**[編集]** を選択してください。

1. **[PC編集]** ウィンドウの **[PC名]** (接続するインスタンス) に `localhost:local-port` と入力してください。ここで、`local-port` はステップ 2 で指定したものと同じ値を使用します。その後、**[保存]** をクリックしてください。

   次の **[PC の編集]** ウィンドウのスクリーンショットは、Mac 上の Microsoft リモートデスクトップのものであることに注意してください。Windows クライアントを使用している場合は、ウィンドウが異なる場合があります。  
![\[PC 名フィールドに「localhost:5555」という例が記載された RDP クライアント。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/ec2-instance-connect-endpoint-rdp.png)

1. RDP クライアントで、(先ほど設定した) PC を右クリックし、**[接続]** を選択してインスタンスに接続します。

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

## トラブルシューティング
<a name="troubleshoot-eice"></a>

以下の情報は、EC2 Instance Connect エンドポイントを使用してインスタンスを接続するときに発生する可能性のある問題の診断と修復に役立ちます。

### インスタンスに接続できない
<a name="troubleshoot-eice-1"></a>

インスタンスに接続できない一般的な理由は次のとおりです。
+ セキュリティ グループ – EC2 Instance Connect エンドポイントとインスタンスに割り当てられたセキュリティグループを確認してください。必要なセキュリティグループルールの詳細については、「[EC2 Instance Connect エンドポイントのセキュリティグループ](eice-security-groups.md)」を参照してください。
+ インスタンスの状態 – インスタンスの状態が [`running`] であることを確認します。
+ キーペア — 接続に使用しているコマンドにプライベートキーが必要な場合は、インスタンスにパブリックキーと、対応するプライベートキーがあることを確認します。
+ IAM アクセス許可 — 必要な IAM アクセス許可があることを確認します。詳細については、「[EC2 Instance Connect エンドポイント を使用するためのアクセス許可の付与](permissions-for-ec2-instance-connect-endpoint.md)」を参照してください。

Linux インスタンスのトラブルシューティングのさらなるヒントについては、「[Amazon EC2 Linux インスタンスへの接続に関する問題のトラブルシューティング](TroubleshootingInstancesConnecting.md)」を参照してください。Windows インスタンスのトラブルシューティングのヒントについては、「[Amazon EC2 Windows インスタンスへの接続に関する問題のトラブルシューティング](troubleshoot-connect-windows-instance.md)」を参照してください。

### ErrorCode: AccessDeniedException
<a name="troubleshoot-eice-2"></a>

`AccessDeniedException` エラーが発生し、`maxTunnelDuration` 条件が IAM ポリシーで指定されている場合は、インスタンスに接続するときに必ず `--max-tunnel-duration` パラメータを指定してください。このパラメータの詳細については、「*AWS CLI コマンドリファレンス*」の「[https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/open-tunnel.html](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/open-tunnel.html)」を参照してください。