

# EC2 インスタンスに接続する
<a name="connect"></a>

Amazon EC2 インスタンスは AWS クラウド 上の仮想サーバーです。インスタンスにログオンするには、インスタンスへの接続を確立する必要があります。インスタンスへの接続方法は、インスタンスのオペレーティングシステムと、インスタンスへの接続に使用するコンピュータのオペレーティングシステムによって異なります。次の表に、各接続方法の要件を示します。


| 接続オプション | インスタンスのオペレーティングシステム | インバウンドトラフィックルール | IAM アクセス許可 | インスタンスプロファイルロール | インスタンス上のソフトウェア | 接続システムのソフトウェア | キーペア | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
|  SSH クライアント  |  Linux  |  はい  |  なし  |  なし  |  なし  |  はい  |  はい  | 
|  EC2 Instance Connect  |  Linux  |  あり  |  あり  |  なし  |  はい ¹  |  いいえ  |  いいえ  | 
| PuTTY |  Linux  |  はい  |  なし  |  なし  |  なし  |  はい  |  はい  | 
| RDP クライアント |  Server   |  はい  |  なし  |  なし  |  なし  |  あり  |  はい ²  | 
| Fleet Manager |  Server   |  いいえ  |  はい  |  はい  |  はい ¹  |  いいえ  |  あり  | 
| セッションマネージャー |  Linux、Windows  |  いいえ  |  はい  |  はい  |  はい ¹  |  いいえ  |  いいえ  | 
| EC2 Instance Connect エンドポイント |  Linux、Windows  |  あり  |  あり  |  なし  |  なし  |  いいえ  |  なし ³  | 

¹ 必要なソフトウェアは、特定の AMI にのみプリインストールされています。必要に応じて、サポートされているオペレーティングシステムに必要なソフトウェアを手動でインストールできます。

² キーペアは、ローカル管理者ユーザーアカウントにランダムに生成されたパスワードを使用している場合にのみ必要です。

³ SSH 接続方法を使用する場合は、キーペアが必要です。

詳細については、使用する接続オプションのドキュメントを参照してください。

**接続オプション**
+ [SSH クライアントを使用して Linux インスタンスに接続する](connect-linux-inst-ssh.md)
+ [PuTTY を使用して Linux インスタンスに接続する](connect-linux-inst-from-windows.md)
+ [RDP クライアントを使用して Windows インスタンスに接続する](connect-rdp.md)
+ [Fleet Manager を使用して Windows インスタンスに接続する](connect-rdp-fleet-manager.md)
+ [Session Manager による接続](connect-with-systems-manager-session-manager.md)
+ [パブリック IP と EC2 Instance Connect を使用して接続する](connect-linux-inst-eic.md)
+ [プライベート IP と EC2 Instance Connect エンドポイントを使用して接続する](connect-with-ec2-instance-connect-endpoint.md)

# 一般的な接続の前提条件
<a name="connection-prereqs-general"></a>

インスタンスに接続するための一般的な前提条件を次に示します。選択した接続オプションに固有の前提条件が別に存在する場合もあります。

**一般的な前提条件**
+ インスタンスのステータスチェックが成功していることを確認します。インスタンスが接続リクエストを受け入れる準備が整うまでに、数分かかることがあります。詳細については、「[ステータスチェックの表示](viewing_status.md)」を参照してください。
+ [必要なインスタンスの詳細を取得する](#connection-prereqs-get-info-about-instance).
+ [プライベートキーを見つけ、許可を設定する](#connection-prereqs-private-key).
+ [(オプション) インスタンスのフィンガープリントを取得する](#connection-prereqs-fingerprint).

## 必要なインスタンスの詳細を取得する
<a name="connection-prereqs-get-info-about-instance"></a>

インスタンスに接続する準備をするには、Amazon EC2 コンソールまたはコマンドラインを使用して次の情報を取得します。

![\[Amazon EC2 コンソールのインスタンスペインを開きます。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/connection-prereqs-console2.png)

+ **インスタンスのパブリック DNS 名を取得します。**

  Amazon EC2 コンソールから、インスタンスのパブリック DNS を取得できます。**[インスタンス]** ペインの **[パブリック IPv4 DNS]** 列を確認します。この列が非表示になっている場合は、画面右上部にある設定アイコン ![\[The gear icon.\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/settings-icon.png)を選択し、**[パブリック IPv4 DNS]** を選択してください。パブリック DNS は、**[インスタンス]** ペインのインスタンス情報セクションにもあります。Amazon EC2 コンソールの **[インスタンス]** ペインでインスタンスを選択すると、そのインスタンスに関する情報がページの下半分に表示されます。**[詳細]** タブで、**[パブリック IPv4 DNS]** を探します。

  その代わりに、[describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) AWS CLIまたは [Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) AWS Tools for Windows PowerShellコマンドを使用することもできます。

  **[パブリック IPv4 DNS]** が表示されない場合は、**[インスタンスの状態]** が **[実行中]** であり、プライベートサブネットでインスタンスを起動していないことを確認します。[インスタンス起動ウィザードを使用してインスタンスを起動した場合](ec2-launch-instance-wizard.md)、**[ネットワーク設定]** の **[パブリック IP の自動割り当て]** フィールドを編集して、値を **[無効]** に変更した可能性があります。**[パブリック IP の自動割り当て]** オプションを無効にすると、インスタンスは起動時にパブリック IP アドレスが割り当てられません。
+ **(IPv6 のみのインスタンス) インスタンスの IPv6 アドレスを取得します。**

  自分のインスタンスに IPv6 アドレスを割り当てている場合は、オプションで、パブリック IPv4 アドレスまたはパブリック IPv4 DNS のホスト名の代わりに、IPv6 アドレスを使用してインスタンスに接続することも可能です。ローカルコンピュータに IPv6 アドレスがあり、IPv6 を使用するように設定されている必要があります。Amazon EC2 コンソールから、インスタンスの IPv6 アドレスを取得できます。**[インスタンス]** ペインの **[IPv6 IPs]** 列を確認します。または、インスタンス情報セクションで IPv6 アドレスを確認できます。Amazon EC2 コンソールの **[インスタンス]** ペインでインスタンスを選択すると、そのインスタンスに関する情報がページの下半分に表示されます。**[詳細]** タブで、**[IPv6 アドレス]** を探します。

  その代わりに、[describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) AWS CLIまたは [Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) AWS Tools for Windows PowerShellコマンドを使用することもできます。IPv6 の詳細については、[IPv6 アドレス](using-instance-addressing.md#ipv6-addressing)を参照してください。
+ **(Linux インスタンス) インスタンスのユーザー名を取得します。**

  インスタンスに接続するにはユーザーアカウントのユーザー名、またはインスタンスの起動に使用した AMI のデフォルトのユーザー名を使用します。
  + **ユーザーアカウントのユーザー名を取得します。**

    ユーザーアカウントの作成方法については[Amazon EC2 Linux インスタンスのシステムユーザーを管理する](managing-users.md)を参照してください。
  + **インスタンスの起動に使用した AMI のデフォルトのユーザー名を取得します。**
    + **Amazon Linux** - `ec2-user`
    + **CentOS** – `centos` または `ec2-user`
    + **Debian** - `admin`
    + **Fedora** – `fedora` または `ec2-user`
    + **FreeBSD** – `ec2-user`
    + **RHEL** – `ec2-user` または `root`
    + **SUSE** – `ec2-user` または `root`
    + **Ubuntu** - `ubuntu`
    + **Oracle** – `ec2-user`
    + **Bitnami** – `bitnami`
    + **Rocky Linux** – `rocky`
    + **その他** – AMI プロバイダーに確認してください。

## プライベートキーを見つけ、許可を設定する
<a name="connection-prereqs-private-key"></a>

SSH を使用した Linux インスタンスへ初期接続、または RDP を使用した Windows インスタンスへの初期接続を行うには、プライベートキーファイルの場所を知る必要があります。SSH 接続の場合、お客様のみがプライベートキーを読み込みできるようにファイルのアクセス許可を設定する必要があります。

Amazon EC2 を使用する際のキーペアの仕組みについては、「[Amazon EC2 のキーペアと Amazon EC2 インスタンス](ec2-key-pairs.md)」を参照してください。
+ **プライベートキーを見つけます。**

  インスタンスの起動時に指定したキーペアの `.pem` ファイルの、コンピュータ上の場所への完全修飾パスを取得します。詳細については、「[起動時に指定されたパブリックキーを特定する](describe-keys.md#identify-key-pair-specified-at-launch)」を参照してください。

  プライベートキーファイルが見つからない場合は、「[プライベートキーを紛失しました。自分のインスタンスに接続するにはどうすればよいですか?](TroubleshootingInstancesConnecting.md#replacing-lost-key-pair)」を参照してください。

  (Linux インスタンス) PuTTY を使用してインスタンスに接続していて、`.pem` ファイルを `.ppk` に変換する必要がある場合は、「[PuTTYgen を使用してプライベートキーを変換する](connect-linux-inst-from-windows.md#putty-private-key)」を参照してください。
+ **(Linux インスタンス) プライベートキーへのアクセス許可を設定し、お客様のみが読み込みできるようにします。**
  + **macOS または Linux から接続する**

    macOS または Linux コンピュータの SSH クライアントを使用して Linux インスタンスに接続する予定がある場合は、自分以外のユーザーが読み込むことができないように、次のコマンドを使用してプライベートキーファイルの許可を設定します。

    ```
    chmod 400 key-pair-name.pem
    ```

    これらのアクセス権限を設定しないと、このキーペアを使用してインスタンスに接続できません。詳細については、「[エラー: Unprotected Private キー ファイル (保護されていないプライベートキーファイル)](TroubleshootingInstancesConnecting.md#troubleshoot-unprotected-key)」を参照してください。
  + **Windows から接続する**

    ファイルエクスプローラーを開き、`.pem` ファイルを右クリックしてください。**[プロパティ]** を選択し、**[セキュリティ]** タブ、**[詳細設定]** の順に選択してください。それから **[継承の無効化]** を選択してください。現在のユーザーを除くすべてのユーザーのアクセスを削除します。

## (オプション) インスタンスのフィンガープリントを取得する
<a name="connection-prereqs-fingerprint"></a>

中間者攻撃から自身を保護する場合、表示されるフィンガープリントを検証することで、接続しようとしているインスタンスの信頼性を検証できます。フィンガープリントの検証は、サードパーティが提供するパブリック AMI からインスタンスを起動した場合に役立ちます。

**タスクの概要**  
まず、インスタンスのインスタンスフィンガープリントを取得します。次に、インスタンスに接続してフィンガープリントを確認するように求められたら、この手順で取得したフィンガープリントと表示されるフィンガープリントを比較します。これらのフィンガープリントが一致しない場合、何者かが中間者 (MITM) 攻撃を試みている可能性があります。一致する場合には、安心してインスタンスに接続できます。

**インスタンスのフィンガープリントを取得するための前提条件**
+ インスタンスが `pending` の状態であってはいけません。フィンガープリントは、インスタンスの最初の起動が完了した後にのみ使用できます。
+ コンソール出力を取得するには、インスタンス所有者である必要があります。
+ インスタンスフィンガープリントを取得するには、さまざまな方法があります。AWS CLI を使用する場合は、ローカルコンピュータにインストールする必要があります。AWS CLI のインストールについては、*AWS Command Line Interface デベロッパーガイドの [Getting started with the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)を参照し*.てください。

**インスタンスのフィンガープリントを取得するには**

ステップ 1 では、インスタンスフィンガープリントを含むコンソール出力を取得します。ステップ 2 では、コンソール出力でインスタンスフィンガープリントを見つけます。

1. コンソール出力を取得するには、以下のいずれかの方法を使用します。

------
#### [ Console ]

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

   1. 左のナビゲーターの **[インスタンス]** を選択してください。

   1. インスタンスを選択してから、**[アクション]**、**[モニタリングとトラブルシューティング]**、**[システムログを取得]** の順に選択してください。

------
#### [ AWS CLI ]

   使用するローカルコンピュータ (お客様が接続しているインスタンス上ではなく) で [get-console-output](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-console-output.html) コマンドを使用します。出力が大きい場合は、[出力をテキストファイルにパイプして](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-output-format.html)読み込みやすいようにすることができます。

   ```
   aws ec2 get-console-output \
       --instance-id i-1234567890abcdef0 \
       --query Output \
       --output text > temp.txt
   ```

------
#### [ PowerShell ]

   ローカルコンピュータで、次の [Get-EC2ConsoleOutput](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ConsoleOutput.html) コマンドレットを使用します。

   ```
   $encodedOutput = (Get-EC2ConsoleOutput -InstanceId i-1234567890abcdef0).Output
   [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($encodedOutput))
   ```

------

1. コンソール出力で、`BEGIN SSH HOST KEY FINGERPRINTS` にあるインスタンス (ホスト) フィンガープリントを見つけます。インスタンスフィンガープリントが複数ある場合があります。インスタンスに接続すると、フィンガープリントの 1 つだけが表示されます。

   正確な出力は、オペレーティングシステム、AMI バージョン、AWS でキーペアを作成したかどうかによって異なります。以下は出力の例です。

   ```
   ec2:#############################################################
   ec2: -----BEGIN SSH HOST KEY FINGERPRINTS-----
   ec2: 256 SHA256:l4UB/neBad9tvkgJf1QZWxheQmR59WgrgzEimCG6kZY no comment (ECDSA)
   ec2: 256 SHA256:kpEa+rw/Uq3zxaYZN8KT501iBtJOIdHG52dFi66EEfQ no comment (ED25519)
   ec2: 2048 SHA256:L8l6pepcA7iqW/jBecQjVZClUrKY+o2cHLI0iHerbVc no comment (RSA)
   ec2: -----END SSH HOST KEY FINGERPRINTS-----
   ec2: #############################################################
   ```
**注記**  
このフィンガープリントは、インスタンスに接続するときに参照してください。

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

SSH を使用して Linux インスタンスに接続するには、いくつかの方法があります。接続元のローカルコンピュータのオペレーティングシステムによっては、接続方法が異なることもあります。また、EC2 Instance Connect や AWS Systems Manager Session Manager などブラウザベースの方法もあり、こうした方法はどのコンピュータからでも使用できます。SSH を使用して Linux インスタンスに接続してコマンドを実行することも、SSH を使用してローカルコンピュータとインスタンス間でファイルを転送することもできます。

SSH を使用して Linux インスタンスに接続する前に、以下の前提条件を満たしていることを確認してください。
+ インスタンスのステータスチェックが成功していることを確認します。インスタンスが接続リクエストを受け入れる準備が整うまでに、数分かかることがあります。詳細については、「[ステータスチェックの表示](viewing_status.md)」を参照してください。
+ インスタンスに関連付けられているセキュリティグループで、IP アドレスからの受信 SSH トラフィックが許可されていることを確認します。詳細については、「[コンピュータからのインスタンスへの接続ルール](security-group-rules-reference.md#sg-rules-local-access)」を参照してください。
+ [必要なインスタンスの詳細を取得する](connection-prereqs-general.md#connection-prereqs-get-info-about-instance).
+ [プライベートキーを見つけ、許可を設定する](connection-prereqs-general.md#connection-prereqs-private-key).
+ [(オプション) インスタンスのフィンガープリントを取得する](connection-prereqs-general.md#connection-prereqs-fingerprint).

次に、以下のオプションのいずれかを選択して SSH で Linux インスタンスに接続します。
+ [SSH クライアントを使用して接続する](connect-linux-inst-ssh.md)
+ [PuTTY を使用した接続](connect-linux-inst-from-windows.md) 
+ [SCP を使用してファイルを転送する](linux-file-transfer-scp.md)

インスタンスに接続できず、トラブルシューティングの手助けが必要な場合は、「[Amazon EC2 Linux インスタンスへの接続に関する問題のトラブルシューティング](TroubleshootingInstancesConnecting.md)」を参照してください。

# SSH クライアントを使用して Linux インスタンスに接続する
<a name="connect-linux-inst-ssh"></a>

Secure Shell (SSH) を使用して、ローカルコンピュータから Linux インスタンスに接続できます。その他のオプションの詳細については、「[EC2 インスタンスに接続する](connect.md)」を参照してください。

**注記**  
インスタンスに接続しようとしているときにエラーが発生した場合は、インスタンスが [SSH 接続の前提条件](#ssh-prereqs-linux-from-linux-macos) のすべてを満たしていることを確認してください。前提条件をすべて満たしているにもかかわらず Linux インスタンスに接続できない場合は、「[Amazon EC2 Linux インスタンスへの接続に関する問題のトラブルシューティング](TroubleshootingInstancesConnecting.md)」を参照してください。

**Topics**
+ [SSH 接続の前提条件](#ssh-prereqs-linux-from-linux-macos)
+ [SSH クライアントを使用して Linux インスタンスに接続する](#connect-linux-inst-sshClient)

## SSH 接続の前提条件
<a name="ssh-prereqs-linux-from-linux-macos"></a>

SSH を使用して Linux インスタンスに接続する前に、以下のタスクを実行してください。

**一般的な前提条件を満たします。**  
+ インスタンスのステータスチェックが成功していることを確認します。インスタンスが接続リクエストを受け入れる準備が整うまでに、数分かかることがあります。詳細については、「[ステータスチェックの表示](viewing_status.md)」を参照してください。
+ [必要なインスタンスの詳細を取得する](connection-prereqs-general.md#connection-prereqs-get-info-about-instance).
+ [プライベートキーを見つけ、許可を設定する](connection-prereqs-general.md#connection-prereqs-private-key).
+ [(オプション) インスタンスのフィンガープリントを取得する](connection-prereqs-general.md#connection-prereqs-fingerprint).

**IP アドレスからのインバウンド SSH トラフィックを許可します。**  
インスタンスに関連付けられているセキュリティグループで、IP アドレスからの受信 SSH トラフィックが許可されていることを確認します。詳細については、「[コンピュータからのインスタンスへの接続ルール](security-group-rules-reference.md#sg-rules-local-access)」を参照してください。

**ローカルコンピュータに SSH クライアントをインストールします (必要な場合)。**  
ローカルコンピュータには、デフォルトで SSH クライアントがインストールされている場合があります。これを確認するには、ターミナルウィンドウで次のコマンドを入力します。ご使用のコンピュータでこのコマンドが認識されない場合、SSH クライアントをインストールする必要があります。  

```
ssh
```
Windows で使用できるオプションの一部を次に示します。コンピュータで別のオペレーティングシステムを実行している場合は、そのオペレーティングシステムのドキュメントで SSH クライアントのオプションを確認してください。

## Windows に OpenSSH をインストールする
<a name="openssh"></a>

Windows に OpenSSH をインストールしたら、SSH を使用して Windows コンピュータから Linux インスタンスに接続できます。開始する前に、以下の前提条件を満たしていることを確認してください。

**Windows のバージョン**  
コンピュータの Windows のバージョンは、Windows Server 2019 以降である必要があります。  
それより前のバージョンの Windows の場合は、代わりに [Win32-OpenSSH](https://github.com/PowerShell/Win32-OpenSSH/wiki) をダウンロードしてインストールします。

**PowerShell の要件**  
PowerShell を使用して Windows OS に OpenSSH をインストールするには、PowerShell バージョン 5.1 以降を実行していて、アカウントがビルトインの管理者グループのメンバーである必要があります。PowerShell から `$PSVersionTable.PSVersion` を実行して、PowerShell のバージョンを確認します。  
自分がビルトインの管理者グループのメンバーかどうかを確認するには、次の PowerShell コマンドを実行します。  

```
(New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
```
ビルトインの管理者グループのメンバーである場合、出力は `True` です。

PowerShell を使用して OpenSSH for Windows をインストールするには、次の PowerShell コマンドを実行します。

```
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
```

以下は出力例です。

```
Path          :
Online        : True
RestartNeeded : False
```

PowerShell を使用して Windows から OpenSSH をアンインストールするには、次の PowerShell コマンドを実行します。

```
Remove-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
```

以下は出力例です。

```
Path          :
Online        : True
RestartNeeded : True
```

## Windows Subsystem for Linux (WSL) をインストールする
<a name="WSL"></a>

Windows に WSL をインストールしたら、SSH クライアントなどの Linux コマンドラインツールを使用して、Windows コンピュータから Linux インスタンスに接続できます。

「[EC2 Windows インスタンスに Windows Subsystem for Linux をインストールする](install-wsl-on-ec2-windows-instance.md)」の手順に従います。Microsoft のインストールガイドの手順に従うと、Linux の Ubuntu ディストリビューションがインストールされます。必要に応じて、別の Linux ディストリビューションをインストールできます。

WSL ターミナルウィンドウで、Windows から WSL に `.pem` ファイル (インスタンスの起動時に指定したキーペアの場合) をコピーします。インスタンスに接続する際に使用する、WSL の `.pem` ファイルへの完全修飾パスをメモします。Windows ハードドライブへのパスを指定する方法の詳細については、[C ドライブにアクセスする方法](https://learn.microsoft.com/en-us/windows/wsl/faq#how-do-i-access-my-c--drive-)を参照してください。

```
cp /mnt/<Windows drive letter>/path/my-key-pair.pem ~/WSL-path/my-key-pair.pem
```

Windows Subsystem for Linux のアンインストールの詳細については、[WSL ディストリビューションをアンインストールする方法](https://learn.microsoft.com/en-us/windows/wsl/faq#how-do-i-uninstall-a-wsl-distribution-)について参照してください。

## SSH クライアントを使用して Linux インスタンスに接続する
<a name="connect-linux-inst-sshClient"></a>

SSH クライアントを使用して Linux インスタンスに接続するには、次の手順に従います。

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

1. コンピュータでターミナルウィンドウを開きます。

1. **ssh** コマンドを使用してインスタンスに接続します。ここで、前提条件の一部として収集したインスタンスの詳細が必要になります。例えば、プライベートキー (`.pem` ファイル) の場所、ユーザー名、およびパブリック DNS 名または IPv6 アドレスが必要です。コマンドの例を次に示します。
   + (パブリック DNS) パブリック DNS 名を使用するには、次のコマンドを入力します。

     ```
     ssh -i /path/key-pair-name.pem instance-user-name@instance-public-dns-name
     ```
   + (IPv6) インスタンスに IPv6 アドレスがある場合、IPv6 アドレスを使用するには、次のコマンドを入力します。

     ```
     ssh -i /path/key-pair-name.pem instance-user-name@2001:db8::1234:5678:1.2.3.4
     ```

   以下に、応答の例を示します。

   ```
   The authenticity of host 'ec2-198-51-100-1.compute-1.amazonaws.com (198-51-100-1)' can't be established.
   ECDSA key fingerprint is l4UB/neBad9tvkgJf1QZWxheQmR59WgrgzEimCG6kZY.
   Are you sure you want to continue connecting (yes/no)?
   ```

1. (オプション) セキュリティアラートのフィンガープリントが、インスタンスのフィンガープリントと一致することを確認します。これらのフィンガープリントが一致しない場合、何者かが中間者 (MITM) 攻撃を試みている可能性があります。一致した場合は、次のステップに進んでください。詳細については、「[インスタンスのフィンガープリントを取得する](connection-prereqs-general.md#connection-prereqs-fingerprint)」を参照してください。

1. **yes** と入力します。

   以下のようなレスポンスが表示されます。

   ```
   Warning: Permanently added 'ec2-198-51-100-1.compute-1.amazonaws.com' (ECDSA) to the list of known hosts.
   ```

# PuTTY を使用して Linux インスタンスに接続する
<a name="connect-linux-inst-from-windows"></a>

Windows 向けの無料の SSH クライアントである PuTTY を使用して、Linux インスタンスに接続できます。

Windows Server 2019 以降を実行している場合は、SSH プロトコルを使用したリモートログイン用のオープンソース接続ツールである OpenSSH の使用をお勧めします。

**注記**  
インスタンスに接続しようとしているときにエラーが発生した場合は、インスタンスが [SSH 接続の前提条件](connect-linux-inst-ssh.md#ssh-prereqs-linux-from-linux-macos) のすべてを満たしていることを確認してください。前提条件をすべて満たしているにもかかわらず Linux インスタンスに接続できない場合は、「[Amazon EC2 Linux インスタンスへの接続に関する問題のトラブルシューティング](TroubleshootingInstancesConnecting.md)」を参照してください。

**Topics**
+ [前提条件](#putty-prereqs)
+ [PuTTYgen を使用してプライベートキーを変換する](#putty-private-key)
+ [Linux インスタンスへの接続](#putty-ssh)

## 前提条件
<a name="putty-prereqs"></a>

PuTTY を使用して Linux インスタンスに接続する前に、以下のタスクを完了しておきます。

**一般的な前提条件を満たします。**  
+ インスタンスのステータスチェックが成功していることを確認します。インスタンスが接続リクエストを受け入れる準備が整うまでに、数分かかることがあります。詳細については、「[ステータスチェックの表示](viewing_status.md)」を参照してください。
+ [必要なインスタンスの詳細を取得する](connection-prereqs-general.md#connection-prereqs-get-info-about-instance).
+ [プライベートキーを見つけ、許可を設定する](connection-prereqs-general.md#connection-prereqs-private-key).
+ [(オプション) インスタンスのフィンガープリントを取得する](connection-prereqs-general.md#connection-prereqs-fingerprint).

**IP アドレスからのインバウンド SSH トラフィックを許可します。**  
インスタンスに関連付けられているセキュリティグループで、IP アドレスからの受信 SSH トラフィックが許可されていることを確認します。詳細については、「[コンピュータからのインスタンスへの接続ルール](security-group-rules-reference.md#sg-rules-local-access)」を参照してください。

**ローカルコンピュータに PuTTY をインストールする (必要な場合)。**  
[PuTTY のダウンロードページ](https://www.chiark.greenend.org.uk/~sgtatham/putty/)から、PuTTY をダウンロードしてインストールします。既にインストールされている旧バージョンの PuTTY がある場合は、最新バージョンをダウンロードすることをお勧めします。必ずスイート全体をインストールします。

**PuTTYgen を使用してプライベートキーを PPK 形式に変換する。**  
インスタンスの起動時に指定したキーペアのプライベートキーを指定する必要があります。プライベートキーを .pem 形式で作成した場合は、PPK ファイルに変換して PuTTY で使用できるようにする必要があります。プライベート (.pem) ファイルを検索し、[PuTTYgen を使用してプライベートキーを変換する](#putty-private-key)のステップに従ってください。

## (オプション) PuTTYgen を使用してプライベートキーを変換する
<a name="putty-private-key"></a>

PuTTY は、SSH キーの PEM 形式をネイティブにサポートしていません。PuTTY には、PEM キーを PuTTY が必要とする PPK 形式に変換する PuTTYgen というツールが用意されています。PPK 形式ではなく PEM 形式を使用してキーを作成した場合は、プライベートキー (.pem ファイル) をこの形式 (.ppk ファイル) に変換して、PuTTY で使用できるようにする必要があります。

**プライベートキーを PEM 形式から PPK 形式に変換するには**

1. [**スタート**] メニューで、[**すべてのプログラム**]、[**PuTTY**]、[**PuTTYgen**] の順に選択します。

1. [**Type of key to generate (生成するキーのタイプ)**] で、[**RSA**] を選択します。お使いの PuTTYgen のバージョンにこのオプションが含まれていない場合は、[**SSH-2 RSA**] を選択します。  
![\[PuTTYgen の RSA キー。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/puttygen-key-type.png)

1. **ロード]** を選択します。PuTTYgen では、デフォルトでは `.ppk` 拡張子を持つファイルだけが表示されます。`.pem` ファイルの場所を特定するには、すべてのタイプのファイルを表示するオプションを選択します。  
![\[すべてのファイルタイプを選択します。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/puttygen-load-key.png)

1. インスタンスの起動時に指定したキーペアの `.pem` ファイルを選択し、[**開く**] を選択します。PuTTYgen により、`.pem` ファイルが正常にインポートされたことが表示されます。[**OK**] を選択します。

1. プライベートキーを PuTTY で使用できる形式で保存するには、[**プライベートキーを保存**] を選択します。PuTTYgen に、パスフレーズなしでキーを保存することに関する警告が表示されます。[**Yes**] を選択します。
**注記**  
プライベートキーのパスフレーズは追加の保護レイヤーです。プライベートキーが検出されても、パスフレーズがなければ使用できません。パスフレーズを使用することの欠点は、インスタンスにログオンしたり、ファイルをインスタンスにコピーしたりするのに人間の介入が必要となるため、オートメーションが難しくなることです。

1. キーペアに使用した名前と同じ名前 (`key-pair-name` など) をキーに指定し、[**保存**] を選択します。PuTTY により、`.ppk` ファイルに拡張子が自動的に追加されます。

プライベートキーが PuTTY で使用するための正しい形式となりました。これで、PuTTY の SSH クライアントを使用してインスタンスに接続することができます。

## Linux インスタンスへの接続
<a name="putty-ssh"></a>

PuTTY を使用して Linux インスタンスに接続するには、次の手順に従います。秘密キーに作成した `.ppk` ファイルが必要になります。詳細については、前のセクションの[(オプション) PuTTYgen を使用してプライベートキーを変換する](#putty-private-key)を参照してください。インスタンスの接続でエラーが発生した場合は、[Amazon EC2 Linux インスタンスへの接続に関する問題のトラブルシューティング](TroubleshootingInstancesConnecting.md)を参照してください。

**最後にテストされたバージョン**: PuTTY .78

**PuTTY を使用してインスタンスに接続するには**

1. PuTTY を起動します (**[スタート]** メニューから **[PuTTY]** を検索し、**[開く]** を選択します)。

1. [**Category (カテゴリ)**] ペインで [**Session (セッション)**] を選択し、次のフィールドに入力します。

   1. [**Host Name (ホスト名)**] ボックスで、次のいずれかの操作を行います。
      + (パブリック DNS) インスタンスのパブリック DNS 名を使用して接続するには、*instance-user-name*@*instance-public-dns-name* と入力します。
      + (IPv6) インスタンスに IPv6 アドレスがある場合、インスタンスの IPv6 アドレスを使用して接続するには、*instance-user-name*@*2001:db8::1234:5678:1.2.3.4* と入力します。

      インスタンスのユーザー名、およびインスタンスのパブリック DNS 名または IPv6 アドレスを取得する方法については、「[必要なインスタンスの詳細を取得する](connection-prereqs-general.md#connection-prereqs-get-info-about-instance)」を参照してください。

   1. [**Port (ポート)**] の値が 22 であることを確認します。

   1. [**Connection type (接続タイプ)**] で [**SSH**] を選択します。  
![\[[PuTTY configuration] (PuTTY configuration) - [Session] (セッション)。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/putty-session-config.png)

1. (オプション) セッションをアクティブに保つため、定期的にキープアライブデータを自動的に送信するように PuTTY を設定できます。これは、セッションがアイドル状態になった際にインスタンスから切断されないようにするのに便利です。**[カテゴリー]** ペインで **[接続]** を選択し、**[キープアライブ間の秒数]** フィールドで必要な間隔を入力します。例えば、10 分間アイドル状態が続いた後にセッションが切断される場合、180 と入力して PuTTY を設定し、キープアライブデータを 3 分ごとに送信するようにします。

1. **[カテゴリー]** ペインで、**[接続]**、**[SSH]** の順に展開し、**[Auth]** を選択します。**[認証情報]** を選択します。

1. **[認証用プライベートキーファイル]** の横にある **[参照]** を選択します。**[プライベートキーファイルの選択]** ダイアログで、`.ppk`キーペア用に生成したファイルを選択します。ファイルをダブルクリックするか、**[プライベートキーファイルの選択]** ダイアログで **[開く]** を選択します。

1. (オプション) このセッションの後にインスタンスに再度接続する場合は、今後使用するためにセッション情報を保存できます。**[カテゴリー]** ペインで、**[セッション]** を選択します。**[保存されたセッション]** にセッションの名前を入力し、**[保存]** を選択します。

1. インスタンスに接続するには、**[開く]** を選択します。

1. このインスタンスに接続するのが初めての場合、PuTTY は接続先のホストを信頼するかどうかを確認するセキュリティアラートダイアログボックスを表示します。

   1. (オプション) セキュリティアラートダイアログボックスのフィンガープリントが、[(オプション) インスタンスのフィンガープリントを取得する](connection-prereqs-general.md#connection-prereqs-fingerprint) で前に取得したフィンガープリントと一致することを確認します。これらのフィンガープリントが一致しない場合、「中間者 (MITM)」攻撃を受けている可能性があります。一致した場合は、次のステップに進んでください。

   1. [**Accept (承諾)**] を選択します。ウィンドウが開き、インスタンスに接続した状態になります。
**注記**  
プライベートキーを PuTTY フォーマットに変換するときにパスフレーズを指定した場合は、インスタンスにログインする際にそのパスフレーズを指定する必要があります。

インスタンスの接続でエラーが発生した場合は、[Amazon EC2 Linux インスタンスへの接続に関する問題のトラブルシューティング](TroubleshootingInstancesConnecting.md)を参照してください。

# SCP を使用して Linux インスタンスにファイルを転送する
<a name="linux-file-transfer-scp"></a>

ローカルコンピュータと Linux インスタンスの間でファイルを転送する方法の 1 つとして、セキュアコピープロトコル (SCP) を使用します。SCP は、1 回限りのファイルコピーなどの簡単な操作に適しています。SCP は、SSH を使用してインスタンスに接続する時に使用するのと同じ .pem ファイルを使用して、ファイルの転送を保護します。ファイルの同期を維持する必要がある場合、またはファイルが大きい場合、**rsync** は SCP よりも高速で効率的です。**rsync** はデフォルトではプレーンテキストを使用してデータを転送するため、セキュリティ確保のため **rsync** は SSH 経由で使用すること。

SCP を使用して Linux インスタンスに接続する前に、以下のタスクを完了してください。
+ **一般的な前提条件を満たします。**
  + インスタンスのステータスチェックが成功していることを確認します。インスタンスが接続リクエストを受け入れる準備が整うまでに、数分かかることがあります。詳細については、「[ステータスチェックの表示](viewing_status.md)」を参照してください。
  + [必要なインスタンスの詳細を取得する](connection-prereqs-general.md#connection-prereqs-get-info-about-instance).
  + [プライベートキーを見つけ、許可を設定する](connection-prereqs-general.md#connection-prereqs-private-key).
  + [(オプション) インスタンスのフィンガープリントを取得する](connection-prereqs-general.md#connection-prereqs-fingerprint).
+ **IP アドレスからのインバウンド SSH トラフィックを許可します。**

  インスタンスに関連付けられているセキュリティグループで、IP アドレスからの受信 SSH トラフィックが許可されていることを確認します。詳細については、「[コンピュータからのインスタンスへの接続ルール](security-group-rules-reference.md#sg-rules-local-access)」を参照してください。
+ **SCP クライアントをインストールします。**

  ほとんどの Linux、Unix、および Apple コンピュータには、デフォルトで SCP クライアントが含まれています。含まれていない場合は、OpenSSH プロジェクトから、SSH ツールの完全なスイートの無料実装が提供されており、これに SCP クライアントが含まれます。詳細については、[https://www.openssh.com](https://www.openssh.com) を参照してください。

以下では、インスタンスのパブリック DNS 名、またはインスタンスに IPv6 アドレスがある場合は IPv6 アドレスを使用し、SCP でファイルを転送する手順を示します。

**SCP を使用してコンピュータとインスタンス間でファイルを転送するには**

1. コンピュータ上のソースファイルの場所と、インスタンス上の送信先パスを決定します。以下の例では、プライベートキーファイルの名前が `key-pair-name.pem`、転送するファイルが `my-file.txt`、インスタンスのユーザー名が ec2-user、インスタンスのパブリック DNS の名前が `instance-public-dns-name` で、インスタンスの IPv6 アドレスが `2001:db8::1234:5678:1.2.3.4` です。
   + (パブリック DNS) インスタンスの送信先にファイルを転送するには、コンピュータから次のコマンドを入力します。

     ```
     scp -i /path/key-pair-name.pem /path/my-file.txt ec2-user@instance-public-dns-name:path/
     ```
   + (IPv6) インスタンスに IPv6 アドレスがある場合、インスタンスの送信先にファイルを転送するには、コンピュータから次のコマンドを入力します。IPv6 アドレスは、(`\`) でエスケープした角かっこ (`[ ]`) で囲む必要があります。

     ```
     scp -i /path/key-pair-name.pem /path/my-file.txt ec2-user@\[2001:db8::1234:5678:1.2.3.4\]:path/
     ```

1. SSH を使用してインスタンスに接続していない場合は、次のようなレスポンスが表示されます。

   ```
   The authenticity of host 'ec2-198-51-100-1.compute-1.amazonaws.com (10.254.142.33)'
   can't be established.
   RSA key fingerprint is 1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f.
   Are you sure you want to continue connecting (yes/no)?
   ```

   (オプション) オプションで、セキュリティアラートのフィンガープリントがインスタンスのフィンガープリントと一致することを確認できます。詳細については、「[(オプション) インスタンスのフィンガープリントを取得する](connection-prereqs-general.md#connection-prereqs-fingerprint)」を参照してください。

   **yes** と入力してください。

1. 転送が成功した場合、レスポンスは以下のようになります。

   ```
   Warning: Permanently added 'ec2-198-51-100-1.compute-1.amazonaws.com' (RSA) 
   to the list of known hosts.
   my-file.txt                                100%   480     24.4KB/s   00:00
   ```

1. 逆の方向 (Amazon EC2 インスタンスからコンピュータ) にファイルを転送するには、ホストパラメータの順番を逆にします。例えば、次の例に示すように、EC2 インスタンスからローカルコンピュータの送信先に `my-file.txt` として `my-file2.txt` を転送できます。
   + (パブリック DNS) コンピュータの送信先にファイルを転送するには、コンピュータから次のコマンドを入力します。

     ```
     scp -i /path/key-pair-name.pem ec2-user@instance-public-dns-name:path/my-file.txt path/my-file2.txt
     ```
   + (IPv6) インスタンスに IPv6 アドレスがある場合、コンピュータの送信先にファイルを転送するには、コンピュータから次のコマンドを入力します。IPv6 アドレスは、(`\`) でエスケープした角かっこ (`[ ]`) で囲む必要があります。

     ```
     scp -i /path/key-pair-name.pem ec2-user@\[2001:db8::1234:5678:1.2.3.4\]:path/my-file.txt path/my-file2.txt
     ```

# Amazon EC2 Linux インスタンスのシステムユーザーを管理する
<a name="managing-users"></a>

各 Linux インスタンスは、デフォルトの Linux システムユーザーで起動されます。インスタンスには、ユーザーを追加することも、削除することもできます。

デフォルトのユーザーの場合、[デフォルトのユーザー名](#ami-default-user-names)は、インスタンスの起動時に指定した AMI によって決まります。

**注記**  
デフォルトでは、パスワード認証とルートログインは無効になっており、また、sudo は有効化されています。インスタンスにログインするには、キーペアを使用する必要があります。ログインの詳細については、「[SSH を使用した Linux インスタンスへの接続](connect-to-linux-instance.md)」を参照してください。  
ユーザーは、インスタンスのパスワード認証とルートログインを許可できます。詳細については、「インスタンスのオペレーティングシステムに関するドキュメント」を参照してください。

**注記**  
Linux システムユーザーと IAM ユーザーを混同しないようにしてください。詳細については、『*IAM ユーザーガイド*』の[IAM ユーザー](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html#id_iam-users)を参照してください。

**Topics**
+ [デフォルトのユーザー名](#ami-default-user-names)
+ [考慮事項](#add-user-best-practice)
+ [ユーザーの作成](#create-user-account)
+ [ユーザーの削除](#delete-user-account)

## デフォルトのユーザー名
<a name="ami-default-user-names"></a>

EC2 インスタンスのデフォルトのユーザー名は、インスタンスの起動時に指定した AMI によって決まります。

デフォルトのユーザー名は以下のとおりです。
+ Amazon Linux AMI の場合、ユーザー名は `ec2-user` です。
+ Centos AMI の場合、ユーザー名は `centos` または `ec2-user` です。
+ Debian AMI の場合は、ユーザー名は `admin` です。
+ Fedora AMI の場合、ユーザー名は `fedora` または `ec2-user` です。
+ FreeBSD AMI の場合、ユーザー名は `ec2-user` です。
+ RHEL AMI の場合、ユーザー名は `ec2-user` または `root` です。
+ SUSE AMI の場合、ユーザー名は `ec2-user` または `root` です。
+ Ubuntu AMI の場合、ユーザー名は `ubuntu` です。
+ Oracle AMI の場合、ユーザー名は `ec2-user` です。
+ Bitnami AMI の場合、ユーザー名は `bitnami` です。

**注記**  
他の Linux ディストリビューションのデフォルトのユーザー名を確認するには、AMI プロバイダーに確認してください。

## 考慮事項
<a name="add-user-best-practice"></a>

デフォルトのユーザーを使用するのが多くのアプリケーションに適しています。ただし、個人が自分のファイルとワークスペースを持つことができるように、ユーザーを追加することを選択できます。さらに、新しいユーザー用にユーザーを作成することは、デフォルトユーザーへのアクセス権を複数のユーザーに (経験のないユーザーも含めて) 与えるよりも、はるかに安全です。これはデフォルトのユーザーが不適切に使用された場合、システムにさまざまな損害を与える可能性があるためです。詳細については、[EC2 インスタンスの保護のヒント](https://aws.amazon.com/articles/tips-for-securing-your-ec2-instance/)を参照してください。

Linux システムのユーザーを使用してユーザーが EC2 インスタンスに SSH アクセスできるようにするには、SSH キーをユーザーと共有する必要があります。または、EC2 Instance Connect を使用して、SSH キーを共有および管理せずにユーザーにアクセスを提供できます。詳細については、「[パブリック IP アドレスと EC2 Instance Connect を使用して Linux インスタンスに接続する](connect-linux-inst-eic.md)」を参照してください。

## ユーザーの作成
<a name="create-user-account"></a>

最初にユーザーを作成してから、ユーザーがインスタンスに接続してログインできるようにする SSH パブリックキーを追加します。

**重要**  
この手順のステップ 1 では、新しいキーペアを作成します。キーペアはパスワードのように機能するため、安全に取り扱うことが非常に重要です。ユーザー用のキーペアを作成する場合は、プライベートキーを安全に送信する必要があります。または、ユーザーが自分のマシン上で独自のキーペアを作成し、プライベートキーを安全に保持することでステップ 1 と 2 を完了してから、あなたにパブリックキーを送信してステップ 3 以降の手順を完了してもらうこともできます。

**ユーザーを作成するには**

1. [新しいキーペアを作成します](create-key-pairs.md#having-ec2-create-your-key-pair)。この `.pem` ファイルは、ユーザーを作成するユーザーに提供する必要があります。ユーザーがインスタンスに接続するには、このファイルを使用する必要があります。

1. 前のステップで作成したキーペアからパブリックキーを取得します。

   ```
   $ ssh-keygen -y -f /path_to_key_pair/key-pair-name.pem
   ```

   コマンドは、次の例に示すように、パブリックキーを返します。

   ```
   ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6Vhz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXrlsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZqaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3RbBQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE
   ```

1. インスタンスに接続します。

1. **adduser** コマンドを使用して、ユーザーを作成し、システムに追加します (`/etc/passwd` ファイルにエントリが追加されます)。このコマンドでも、グループが作成され、ユーザーのホームディレクトリが作成されます。この例では、ユーザーは `newuser` という名前になります。
   + AL2023 と Amazon Linux 2

     AL2023 および Amazon Linux 2 では、デフォルトでパスワード認証が無効化された状態で、ユーザーが作成されます。

     ```
     [ec2-user ~]$ sudo adduser newuser
     ```
   + Ubuntu

     パスワード認証が無効化されたユーザーを作成するには、`--disabled-password` パラメータを含めます。

     ```
     [ubuntu ~]$ sudo adduser newuser --disabled-password
     ```

1. 新しいユーザーに切り替えて、作成するディレクトリとファイルが適切な所有権を持つようにします。

   ```
   [ec2-user ~]$ sudo su - newuser
   ```

   シェルセッションが新しいユーザーに切り替わったことを示すために `ec2-user` から `newuser` に変更するように求められます。

1. ユーザーに SSH パブリックキーを追加します。以下のサブステップで説明しているように、最初に SSH キーファイル用のディレクトリをユーザーのホームディレクトリに作成し、次にキーファイルを作成して、最後に公開キーをキーファイルに貼り付けます。

   1. `.ssh` ホームディレクトリに `newuser` ディレクトリを作成し、そのファイルのアクセス許可を `700` (所有者のみ、読み取り、書き込み、削除が可能) に変更します。

      ```
      [newuser ~]$ mkdir .ssh
      ```

      ```
      [newuser ~]$ chmod 700 .ssh
      ```
**重要**  
厳密なファイル権限がなければ、ユーザーはログインできません。

   1. `authorized_keys` という名前のファイルを `.ssh` ディレクトリに作成し、そのファイルのアクセス許可を `600` (所有者のみ、読み取りおよび書き込みが可能) に変更します。

      ```
      [newuser ~]$ touch .ssh/authorized_keys
      ```

      ```
      [newuser ~]$ chmod 600 .ssh/authorized_keys
      ```
**重要**  
厳密なファイル権限がなければ、ユーザーはログインできません。

   1. <a name="edit_auth_keys"></a>お好みのテキストエディタ (例: **vim** や **nano**) で、`authorized_keys` ファイルを開きます。

      ```
      [newuser ~]$ nano .ssh/authorized_keys
      ```

      **ステップ 2** で取得したパブリックキーをファイルに貼り付け、変更を保存します。
**重要**  
パブリックキーは、必ず 1 つの連続した行に貼り付けてください。パブリックキーを複数行に分割することはできません。

      これで、`authorized_keys` ファイルに追加したパブリックキーの対であるプライベートキーを使用して、インスタンスの `newuser` ユーザーにログインできるようになりました。Linux インスタンスに接続するさまざまな方法の詳細については、[SSH を使用した Linux インスタンスへの接続](connect-to-linux-instance.md)を参照してください。

## ユーザーの削除
<a name="delete-user-account"></a>

ユーザーが不要になった場合、今後使用されないようにそのユーザーを削除できます。

システムからユーザーアカウントを削除するには、**userdel** コマンドを使用します。`-r` パラメータを指定すると、ユーザーのホームディレクトリとメールスプールが削除されます。ユーザーのホームディレクトリとメールスプールを維持するには、`-r` パラメータを省略します。

```
[ec2-user ~]$ sudo userdel -r olduser
```

# RDP を使用した Windows インスタンスへの接続
<a name="connecting_to_windows_instance"></a>

ほとんどの Windows Amazon マシンイメージ (AMI) から作成された Amazon EC2 インスタンスは、リモートデスクトップを使用して接続することができます。リモートデスクトップは、Remote Desktop Protocol (RDP) を使用して接続でき、目の前のコンピュータ (ローカルコンピュータ) を使用するのと同じ方法でインスタンスを使用します。これは、Windows のほとんどのエディションで使用でき、Mac OS でも利用できます。

Windows Server オペレーティング システムのライセンスでは、2 つの同時リモート接続を管理目的で使用できます。Windows Server のライセンスは、Windows インスタンスの価格に含まれています。同時リモート接続が 3 つ以上必要な場合は、リモートデスクトップサービス (RDS) ライセンスを購入する必要があります。3 番目の接続を試みると、エラーが発生します。

**ヒント**  
[AWS Nitro System](https://aws.amazon.com/ec2/nitro/) で構築されたインスタンスの起動、ネットワーク構成、および他の問題をトラブルシューティングするためにインスタンスに接続する必要がある場合は、[インスタンス用 EC2 シリアルコンソール](ec2-serial-console.md) を使用できます。

**Topics**
+ [RDP クライアントを使用して Windows インスタンスに接続する](connect-rdp.md)
+ [Fleet Manager を使用して Windows インスタンスに接続する](connect-rdp-fleet-manager.md)
+ [RDP を使用して Windows インスタンスにファイルを転送する](connect-to-linux-instanceWindowsFileTransfer.md)

# RDP クライアントを使用して Windows インスタンスに接続する
<a name="connect-rdp"></a>

以下のように、RDP クライアントを使用して Windows インスタンスに接続できます。

**ヒント**  
または、[Systems Manager Fleet Manager](connect-rdp-fleet-manager.md) または [EC2 Instance Connect エンドポイント](connect-with-ec2-instance-connect-endpoint.md)を使用して Windows インスタンスに接続することもできます。

## 前提条件
<a name="rdp-prereqs"></a>

RDP クライアントを使用して Windows インスタンスに接続するには、次の前提条件を満たす必要があります。
+ **一般的な前提条件を満たします。**
  + インスタンスのステータスチェックが成功していることを確認します。インスタンスが接続リクエストを受け入れる準備が整うまでに、数分かかることがあります。詳細については、「[ステータスチェックの表示](viewing_status.md)」を参照してください。
  + [必要なインスタンスの詳細を取得する](connection-prereqs-general.md#connection-prereqs-get-info-about-instance).
  + [プライベートキーを見つけ、許可を設定する](connection-prereqs-general.md#connection-prereqs-private-key).
  + [(オプション) インスタンスのフィンガープリントを取得する](connection-prereqs-general.md#connection-prereqs-fingerprint).
+ **RDP クライアントをインストールします。**
  + (Windows) Windows にはデフォルトで RDP クライアントが備わっています。確認するには、コマンドプロンプトウィンドウで **mstsc** と入力してください。コンピュータがこのコマンドを認識しない場合は、[Microsoft ストアから Microsoft リモートデスクトップアプリ](https://apps.microsoft.com/detail/9wzdncrfj3ps)をダウンロードします。
  + (macOS X) Mac App Store から [Microsoft リモートデスクトップアプリ](https://apps.apple.com/us/app/windows-app/id1295203466?mt=12)をダウンロードします。
  + (Linux) [Remmina](https://remmina.org/) を使用します。
+ **IP アドレスからのインバウンド RDP トラフィックを許可します。**

  インスタンスに関連付けられているセキュリティグループで、IP アドレスからの受信 RDP トラフィックが許可されていることを確認します。詳細については、「[コンピュータからのインスタンスへの接続ルール](security-group-rules-reference.md#sg-rules-local-access)」を参照してください。

## 管理者パスワードを取得する
<a name="retrieve-initial-admin-password"></a>

インスタンスをドメインに参加させた場合は、Directory Service のドメイン認証情報を使用してインスタンスに接続できます。リモートデスクトップのログイン画面で、ローカルコンピュータ名と生成されたパスワードを使用する代わりに、管理者の完全修飾ユーザー名 (例:**corp.example.com\$1Admin**) と、そのアカウントのパスワードを入力してください。

RDP を使用して Windows インスタンスに接続するには、初期管理者パスワードを取得し、インスタンスに接続するときにこのパスワードを入力する必要があります。インスタンスの起動後、パスワードが利用可能になるまでに数分かかります。アカウントには、[GetPasswordData](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetPasswordData.html) アクションを呼び出すアクセス許可が必要です。詳細については、「[Amazon EC2 API へのアクセスを制御するポリシーの例](ExamplePolicies_EC2.md)」を参照してください。

管理者アカウントのデフォルトのユーザー名は、AMI に含まれるオペレーティングシステム (OS) の言語によって異なります。正しいユーザー名を確認するには、AMI の OS の言語を特定し、対応するユーザー名を選択してください。例えば、英語 OS の場合、ユーザー名は `Administrator` で、フランス語 OS の場合は `Administrateur`、ポルトガル語 OS の場合は `Administrador` です。OS の言語バージョンに同じ言語のユーザー名がない場合は、ユーザー名 `Administrator (Other)` を選択してください。詳細については、Microsoft TechNet Wiki の[Localized Names for Administrator Account in Windows](https://learn.microsoft.com/en-us/archive/technet-wiki/13813.localized-names-for-administrator-account-in-windows)を参照してください。

**初期管理者パスワードを取得するには**

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

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

1. 対象のインスタンスを選択し、**[Connect]** (接続) をクリックしてください。

1. **[インスタンスに接続]** ページで、**[RDP クライアント]** タブを選択してください。

1. **[ユーザー名]** で、管理者アカウントのデフォルトのユーザー名を選択してください。選択するユーザー名は、インスタンスの起動に使用した AMI に含まれるオペレーティングシステム (OS) の言語と一致する必要があります。使用する OS と同じ言語のユーザー名がない場合は、**[Administrator (Other)]** を選択してください。

1. **[パスワードを取得]** を選択してください。

1. **[Windows パスワードを取得]** ページで、次の操作を行います。

   1. **[プライベートキーファイルのアップロード]** を選択し、インスタンスの起動時に指定したプライベートキー `.pem`ファイルに移動します。ファイルを選択した上で、[**Open**] (開く) を選択して、ファイルの内容をすべてウィンドウにコピーします。

   1. **[パスワードを復号化]** を選択してください。**[Windows パスワードを取得]** ページが閉じて、インスタンスのデフォルトの管理者パスワードが、**[パスワード]** の下に表示されます。前に表示されていた **[パスワードを取得]** のリンクは削除されます。

   1. パスワードをコピーして、安全な場所に保存します。このパスワードはインスタンスに接続するのに必要です。

## Windows インスタンスに接続する
<a name="connecting-to-windows-instance-rdp-client"></a>

次の手順では、Windows のリモートデスクトップ接続クライアント (MSTSC) を使用します。別の RDP クライアントを使用する場合は RDP ファイルをダウンロードし、RDP 接続を確立する手順については RDP クライアントのドキュメントを参照してください。

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

1. **[インスタンスに接続]** ページで、**[リモートデスクトップファイルのダウンロード]** を選択してください。ファイルのダウンロードが完了したら、**[キャンセル]** を選択し、**[インスタンス]** ページに戻ります。RDP ファイルが `Downloads` フォルダにダウンロードされます。

1. `mstsc.exe` を実行して RDP クライアントを開きます。

1. **[オプションを表示]** を展開して **[開く]** を選択し、`Downloads` フォルダから .rdp ファイルを選択してください。

1. デフォルトでは、**[コンピュータ]** はインスタンスのパブリック IPv4 DNS 名で、**[ユーザー名]** は管理者アカウントです。代わりに IPv6 を使用してインスタンスに接続するには、インスタンスのパブリック IPv4 DNS 名を IPv6 アドレスに置き換えます。必要に応じて、デフォルト設定を確認して変更します。

1. **[接続]**を選択してください。リモート接続のパブリッシャーが不明であるという警告が表示された場合は、**[接続]** を選択して続行します。

1. 以前に保存したパスワードを入力し、**[OK]** を選択してください。

1. 自己署名証明書の性質上、セキュリティ証明書を認証できないという警告が表示されることがあります。次のいずれかを行います。
   + 証明書を信頼する場合は、**[はい]** を選択してインスタンスに接続します。
   + [Windows] 続行する前に、証明書のサムプリントとシステムログの値を比較して、リモートコンピュータの ID を確認します。**[証明書を表示]** を選択し、**[詳細]** タブから **[サムプリント]** を選択してください。この値を **[アクション]**、**[モニタリングとトラブルシューティング]**、**[システムログの取得]** の `RDPCERTIFICATE-THUMBPRINT` の値と比較します。
   + [Mac OS X] 続行する前に、証明書のフィンガープリントとシステムログの値を比較して、リモートコンピュータの ID を確認します。**[証明書を表示]** を選択し、**[詳細]** を展開し、**[SHA1 フィンガープリント]** を選択してください。この値を **[アクション]**、**[モニタリングとトラブルシューティング]**、**[システムログの取得]** の `RDPCERTIFICATE-THUMBPRINT` の値と比較します。

1. RDP 接続が成功すると、RDP クライアントに Windows ログイン画面が表示され、次に Windows デスクトップが表示されます。代わりにエラーメッセージが表示された場合は、「[リモートデスクトップからリモートコンピュータに接続できません](troubleshoot-connect-windows-instance.md#rdp-issues)」を参照してください。RDP 接続が完了したら、RDP クライアントを閉じることができます。

## ユーザーアカウントを設定する
<a name="configure-admin-accounts"></a>

RDP でインスタンスに接続したら、次のタスクを実行することをお勧めします。
+ 管理者パスワードをデフォルト値から変更します。Windows Server を実行しているコンピュータと同様、[パスワードの変更は、インスタンス自体にログインした状態で行うことができます](https://support.microsoft.com/en-us/windows/change-or-reset-your-windows-password-8271d17c-9f9e-443f-835a-8318c8f68b9c)。
+ インスタンスに管理者権限を持つユーザーをもう 1 つ作成します。これは、管理者パスワードを忘れた場合や、管理者アカウントで問題が発生した場合の安全策です。新しいユーザーには、インスタンスにリモートからアクセスするための許可が必要です。[**システムのプロパティ**] を開くには、Windows デスクトップまたはエクスプローラーで [**This PC**] アイコンを右クリックして [**プロパティ**] を選択してください。[**リモートの設定**]、**ユーザーの選択**] の順に選択して、[**リモートデスクトップユーザー**] グループにユーザーを追加します。  
![\[[System Properties] (システムのプロパティ) ウィンドウ。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/windows-connect-properties-rdp.png)

# Fleet Manager を使用して Windows インスタンスに接続する
<a name="connect-rdp-fleet-manager"></a>

AWS Systems Manager の機能である Fleet Manager を使用すると、Remote Desktop Protocol (RDP) を使用して Windows インスタンスに接続し、AWS マネジメントコンソール の同じページに最大 4 つの Windows インスタンスを表示できます。Amazon EC2 コンソールの **[インスタンス]** ページから Fleet Manager Remote Desktop ディレクトリの最初のインスタンスに直接接続できます。Fleet Manager の詳細については、「*AWS Systems Manager ユーザーガイド」の「[リモートデスクトップを使用して管理対象インスタンスに接続する](https://docs.aws.amazon.com/systems-manager/latest/userguide/fleet-manager-remote-desktop-connections.html)」を参照してください*。

Fleet Manager を使用して接続する場合は、IP アドレスからの着信 RDP トラフィックを特に許可する必要はありません。Fleet Manager が処理します。

**前提条件**  
Fleet Manager を使用してインスタンスに接続する前に、環境をセットアップする必要があります。詳細については、「AWS Systems Manager ユーザーガイド」の「[環境のセットアップ](https://docs.aws.amazon.com/systems-manager/latest/userguide/fleet-manager-remote-desktop-connections.html#rdp-prerequisites)」を参照してください。

**Fleet Manager を使用して Windows インスタンスに接続するには**

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

1. ナビゲーションペインから **[Instances]** を選択してください。

1. 対象のインスタンスを選択し、**[Connect]** (接続) をクリックしてください。

1. **[RDP クライアント]** タブの **[接続タイプ]** で、**[Fleet Manager を使用して接続する]** を選択してください。

1. **[Fleet Manager リモートデスクトップ]** を選択してください。これにより、AWS Systems Manager コンソールで **[Fleet Manager Remote Desktop]** (Fleet Manager リモートデスクトップ) ページが開きます。

1. 認証情報を入力し、**[接続]** を選択してください。

1. RDP 接続が成功すると、Fleet Manager に Windows デスクトップが表示されます。セッションが終了したら、**[アクション]**、**[セッションの終了]** を選択してください。

詳細については、「AWS Systems Manager ユーザーガイド」の「[Connecting to a Windows Server managed instance using Remote Desktop](https://docs.aws.amazon.com/systems-manager/latest/userguide/fleet-manager-remote-desktop-connections.html)」を参照してください。

# RDP を使用して Windows インスタンスにファイルを転送する
<a name="connect-to-linux-instanceWindowsFileTransfer"></a>

Windows インスタンスの使い方は、通常の Windows Server と同じです。例えば、Microsoft リモートデスクトップ接続 (RDP) ソフトウェアのローカルファイル共有機能を使用して、Windows インスタンスとローカルコンピュータの間でファイルを転送できます。例えば、ハードディスクドライブ、DVD ドライブ、ポータブルメディアドライブ、およびマップされたネットワークドライブ上のローカルファイルにアクセスすることができます。

Windows インスタンスからローカルファイルにアクセスするには、リモートセッションドライブをローカルドライブにマッピングして、ローカルファイル共有機能を有効にする必要があります。この手順は、ローカルコンピュータのオペレーティングシステムが Windows または macOS X のどちらであるかによって若干異なります。

RDP を使用して接続するための前提条件の詳細については、「[前提条件](connect-rdp.md#rdp-prereqs)」を参照してください。

------
#### [ Windows ]

**リモートセッションドライブをローカル Windows コンピュータのローカルドライブにマップするには**

1. リモートデスクトップ接続クライアントを開きます。

1. [**Show Options**] を選択してください。

1. 次のように、インスタンスのホスト名を **[コンピュータ]** フィールドに追加し、ユーザー名を **[ユーザー名]** フィールドに追加します。

   1. **[Connection settings]** (接続設定) で、**[Open...]** (...を開く) を選択し、Amazon EC2 コンソールからダウンロードした RDP ショートカットファイルを参照してください。このファイルには、インスタンスを識別するパブリック IPv4 DNS ホスト名と、管理者ユーザー名が含まれます。

   1. ファイルを選択し、**[Open]** (開く) を選択してください。**[Computer]** (コンピュータ) フィールドと **[User name]** (ユーザー名) フィールドには、RDP ショートカットファイルの値が入力されます。

   1. [**Save**] を選択してください。

1. [**ローカルリソース**] タブを選択してください。

1. **[Local devices and resources]** (ローカルデバイスとリソース) で、**[More...]** (詳細...) を選択してください。  
![\[[RDP Local Resources] (RDP ローカルリソース) ウィンドウ。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/windows-connect-rdp-local-resources.png)

1. [**ドライブ**] を開き、Windows インスタンスにマッピングするローカルドライブを選択してください。

1. [**OK**] を選択してください。  
![\[[RDP Local devices and resources] (RDP ローカルデバイスとリソース) ウィンドウ。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/windows-connect-rdp-drives.png)

1. [**接続**] を選択して Windows インスタンスに接続します。

------
#### [ macOS X ]

**ローカルの macOS X コンピュータのローカルフォルダにリモートセッションドライブをマッピングするには**

1. リモートデスクトップ接続クライアントを開きます。

1. Amazon EC2 コンソールの インスタンスへの初回接続時) からダウンロードした RDP ファイルを参照し、Remote Desktop Connection クライアントにドラッグします。

1. RDP ファイルを右クリックし、**[Edit]** (編集) を選択してください。

1. **[フォルダ]** タブを選択し、**[フォルダをリダイレクト]** のチェックボックスをオンにします。  
![\[Microsoft Remote Desktop Edit PC ウィンドウ。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/mac-map-folder-1.png)

1. 左下の **\$1** アイコンを選択し、マッピングするフォルダを参照して、**[Open]** (開く) を選択してください。マッピングする各フォルダについて、この手順を繰り返します。

1. [**Save**] を選択してください。

1. [**接続**] を選択して Windows インスタンスに接続します。パスワードを入力するよう求められます。

1. インスタンスのファイルエクスプローラーで **[This PC]** (この PC) を展開し、ローカルファイルにアクセスできる共有フォルダを見つけます。次のスクリーンショットでは、ローカルコンピュータの**デスクトップ**フォルダがインスタンスのリモートセッションドライブにマッピングされています。  
![\[Microsoft Remote Desktop Edit PC ウィンドウ。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/mac-map-folder-2.png)

Mac コンピュータのリモートセッションでローカルデバイスを使用できるようにする方法の詳細については、「[Get started with the macOS client](https://learn.microsoft.com/en-us/windows-server/remote/remote-desktop-services/clients/remote-desktop-mac)」(macOS の開始方法) を参照してください。

------

# Session Manager を使用して Amazon EC2 インスタンスに接続する
<a name="connect-with-systems-manager-session-manager"></a>

Session Manager はフルマネージド型の AWS Systems Manager 機能です。ブラウザベースのインタラクティブなワンクリックシェルまたは AWS CLI を介して Amazon EC2 インスタンスを管理します。Session Manager を使用して、アカウント内のインスタンスとのセッションを開始できます。セッションの開始後は、他の接続タイプと同様に、インスタンスでインタラクティブコマンドを実行できます。Session Manager の詳細については、*AWS Systems Manager ユーザーガイド*の「[AWS Systems Manager Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html)」を参照してください。

**前提条件**  
Session Manager を使用してインスタンスへの接続を試みる前に、必要なセットアップ手順を完了しておく必要があります。例えば、SSM でインスタンスを管理し、**[AmazonSSMManagedInstanceCore]** ポリシーを使用してインスタンスを IAM ロールにアタッチしておく必要があります。詳細については、「[Session Manager のセットアップ](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started.html)」を参照してください。

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

1. Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

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

1. インスタンスを選択し、[**接続**] を選択します。

1. 接続方法では、**[Session Manager]** を選択します。

1. **[接続]** を選択してセッションを開始します。  
![\[[Session Manager] タブの [接続] ボタン。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/connect-method-session-manager.png)

**トラブルシューティング**  
1 つ以上の Systems Manager アクション (`ssm:command-name`) の実行は承認されていないというエラーが表示された場合は、Amazon EC2 コンソールからセッションを開始できるようにポリシーを更新する必要があります。詳細と手順については、「[AWS Systems Manager ユーザーガイドユーザーガイド](https://docs.aws.amazon.com/systems-manager/latest/userguide/getting-started-restrict-access-quickstart.html)」の「*Session Manager のデフォルトの IAM ポリシーのクイックスタート*」を参照してください。

# パブリック IP アドレスと EC2 Instance Connect を使用して Linux インスタンスに接続する
<a name="connect-linux-inst-eic"></a>

Amazon EC2 Instance Connect を使用すると、Secure Shell (SSH) 経由で Linux インスタンスに安全に接続できます。EC2 Instance Connect では、AWS Identity and Access Management (IAM) [ポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)および[プリンシパル](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-principal)を使用して、インスタンスへの SSH によるアクセスをコントロールします。SSH キーを共有および管理する必要はありません。EC2 Instance Connect を使用したすべての接続リクエストは、[AWS CloudTrail にログとして記録される](monitor-with-cloudtrail.md#ec2-instance-connect-cloudtrail)ため、接続リクエストを監査できます。

EC2 Instance Connect では、Amazon EC2 コンソールまたは任意の SSH クライアントを使用してインスタンスに接続できます。

EC2 Instance Connect を使用してインスタンスに接続すると、EC2 Instance Connect API から SSH パブリックキーが[インスタンスメタデータ](ec2-instance-metadata.md)にプッシュされ、60 秒間保持されます。ユーザーにアタッチされた IAM ポリシーにより、ユーザーはパブリックキーをインスタンスメタデータにプッシュすることを許可されます。SSH デーモンは、インスタンスメタデータから承認用のパブリックキーを検索してユーザーをインスタンスに接続するために、EC2 Instance Connect のインストール時に設定される `AuthorizedKeysCommand` と `AuthorizedKeysCommandUser` を使用します。

**ヒント**  
EC2 Instance Connect は Linux インスタンスに接続するためのオプションの 1 つです。他のオプションについては、「[SSH を使用した Linux インスタンスへの接続](connect-to-linux-instance.md)」を参照してください。Windows インスタンスに接続するには、「[RDP を使用した Windows インスタンスへの接続](connecting_to_windows_instance.md)」を参照してください。

**料金**  
EC2 Instance Connect は、追加のコストなしで利用できます。

**リージョンの可用性**  
EC2 Instance Connect はアジアパシフィック (台北) を除き、すべての AWS リージョン で利用できます。Local Zones ではサポートされていません。

**Topics**
+ [チュートリアル](ec2-instance-connect-tutorial.md)
+ [前提条件](ec2-instance-connect-prerequisites.md)
+ [アクセス許可](ec2-instance-connect-configure-IAM-role.md)
+ [EC2 Instance Connect のインストール](ec2-instance-connect-set-up.md)
+ [インスタンスへの接続](ec2-instance-connect-methods.md)
+ [EC2 Instance Connect のアンインストール](ec2-instance-connect-uninstall.md)

EC2 Instance Connect を使用して拠点ホストのセキュリティを強化する方法に関して説明しているブログ投稿については、「[Amazon EC2 Instance Connect を使用した拠点ホストの保護](https://aws.amazon.com/blogs/infrastructure-and-automation/securing-your-bastion-hosts-with-amazon-ec2-instance-connect/)」を参照してください。

# チュートリアル: EC2 Instance Connect を使用してインスタンスに接続するために必要な設定を完了する
<a name="ec2-instance-connect-tutorial"></a>

Amazon EC2 コンソールで EC2 Instance Connect を使用してインスタンスに接続するには、まず、インスタンスに正常に接続するための前提条件の設定を完了する必要があります。このチュートリアルの目的は、前提条件となる設定を完了するためのタスクを順を追って説明することです。

**チュートリアルの概要**

このチュートリアルでは、以下の 4 タスクを完了します。
+ [タスク 1: EC2 Instance Connect を使用するために必要なアクセス許可を付与する](#eic-tut1-task1)

  まず、パブリックキーをインスタンスメタデータにプッシュできる IAM アクセス許可を含む IAM ポリシーを作成します。IAM ID (ユーザー、ユーザーグループ、またはロール) にこのポリシーをアタッチして、IAM ID がこれらのアクセス許可を取得できるようにします。
+ [タスク 2: EC2 Instance Connect サービスからインスタンスへのインバウンドトラフィックを許可する](#eic-tut1-task2)

  次に、EC2 Instance Connect サービスからインスタンスへのトラフィックを許可するセキュリティグループを作成します。これは、Amazon EC2 コンソールで EC2 Instance Connect を使用してインスタンスに接続するときに必要です。
+ [タスク 3: インスタンスを起動する](#eic-tut1-task3)

  次に、EC2 Instance Connect にあらかじめインストールされている AMI を使用して EC2 インスタンスを起動し、前のステップで作成したセキュリティグループを追加します。
+ [タスク 4: インスタンスに接続する](#eic-tut1-task4)

  最後に、Amazon EC2 コンソールで EC2 Instance Connect を使用してインスタンスに接続します。接続できたら、タスク 1、2、3 で完了した前提条件の設定が成功したことを確認できます。

## タスク 1: EC2 Instance Connect を使用するために必要なアクセス許可を付与する
<a name="eic-tut1-task1"></a>

EC2 Instance Connect を使用してインスタンスに接続すると、EC2 Instance Connect API から SSH パブリックキーが[インスタンスメタデータ](ec2-instance-metadata.md)にプッシュされ、60 秒間保持されます。パブリックキーをインスタンスメタデータにプッシュするために必要なアクセス許可を付与するには、IAM ID (ユーザー、ユーザーグループ、またはロール) にアタッチされた IAM ポリシーが必要です。

**タスクの目標**

パブリックキーをインスタンスにプッシュするアクセス許可を付与する IAM ポリシーを作成します。許可する具体的なアクションは `ec2-instance-connect:SendSSHPublicKey` です。Amazon EC2 コンソールでインスタンスを表示して選択できるように、`ec2:DescribeInstances` アクションを許可する必要もあります。

ポリシーを作成したら、そのポリシーを IAM ID (ユーザー、ユーザーグループ、またはロール) にアタッチして、IAM ID にアクセス許可が付与されるようにします。

以下のように構成されたポリシーを作成します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "ec2-instance-connect:SendSSHPublicKey",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:DescribeInstances",
            "Resource": "*"
        }
    ]
}
```

------

**重要**  
このチュートリアルで作成した IAM ポリシーは非常に強力なアクセス許可を持つポリシーで、任意の AMI ユーザー名を使用して任意のインスタンスに接続できます。チュートリアルをシンプルにし、このチュートリアルで説明する特定の設定に焦点を当てるために、この非常に強力なアクセス許可を持つポリシーを使用しています。ただし、本番環境では、[最小権限のアクセス許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)を付与するように IAM ポリシーを設定することをお勧めします。IAM ポリシーの例は [IAM への EC2 Instance Connect のアクセス許可の付与](ec2-instance-connect-configure-IAM-role.md) を参照してください。

**EC2 Instance Connect を使用してインスタンスに接続することを許可する IAM ポリシーを作成してアタッチするには**

1. **まず、IAM ポリシーを作成します**

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

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

   1. [**ポリシーの作成**] を選択してください。

   1. **[アクセス許可の指定]** ページで、以下を実行します。

      1. **[サービス]** で、**[EC2 Instance Connect]** を選択してください。

      1. **[許可されたアクション]** の検索フィールドに **send** を入力すると関連するアクションが表示されるので、**[SendSSHPublicKey]** を選択してください。

      1. **[リソース]** で、**[すべて]** を選択してください。本番環境では、ARN でインスタンスを指定することをお勧めしますが、このチュートリアルではすべてのインスタンスを許可します。

      1. **[アクセス許可の追加]** を選択してください。

      1. **サービス**で **EC2** を選択してください。

      1. **[許可されたアクション]** の検索フィールドに **describein** を入力すると関連するアクションが表示されるので、**[DescribeInstances]** を選択してください。

      1. [**Next**] を選択してください。

   1. **[レビューと作成]** ページで、以下の操作を実行します。

      1. [**Policy Name**] にこのポリシーの名前を入力してください。

      1. [**Create policy**] を選択してください。

1. **次に、ポリシーを自分の ID にアタッチします。**

   1. IAM コンソールのナビゲーションペインから、[**ポリシー**] を選択してください。

   1. ポリシーのリストで、作成したポリシーの名前の横にあるラジオボックスをオンにします。検索ボックスを使用して、ポリシーのリストをフィルタリングできます。

   1. [**アクション**]、[**アタッチ**] の順にクリックしてください。

   1. **[IAM エンティティ]** で、ID (ユーザー、ユーザーグループ、ロール) の横にあるチェックボックスをオンにします。検索ボックスを使用して、エンティティのリストをフィルタリングできます。

   1. **Attach policy]** (ポリシーのアタッチ) を選択してください。

### アニメーションを表示: IAM ポリシーの作成
<a name="eic-tut1-task1-animation1"></a>

![\[このアニメーションは、IAM ポリシーの作成方法を示します。このアニメーションのテキストバージョンについては、前述の手順のステップを参照してください。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/eic-tut1-task1-create-iam-policy.gif)


### アニメーションを表示: IAM ポリシーのアタッチ
<a name="eic-tut1-task1-animation2"></a>

![\[このアニメーションでは、IAM ポリシーを IAM ID にアタッチする方法を説明します。このアニメーションのテキストバージョンについては、前述の手順のステップを参照してください。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/eic-tut1-task1-attach-iam-policy.gif)


## タスク 2: EC2 Instance Connect サービスからインスタンスへのインバウンドトラフィックを許可する
<a name="eic-tut1-task2"></a>

Amazon EC2 コンソールで EC2 Instance Connect を使用してインスタンスに接続する場合、インスタンスに到達できるようにする必要があるトラフィックは、EC2 Instance Connect サービスからのトラフィックです。これはローカルコンピュータからインスタンスへの接続とは異なります。その場合は、ローカルコンピュータからインスタンスへのトラフィックを許可する必要があります。EC2 Instance Connect サービスからのトラフィックを許可するには、EC2 Instance Connect サービスの IP アドレス範囲からのインバウンド SSH トラフィックを許可するセキュリティグループを作成する必要があります。

AWS はプレフィックスリストを使用して IP アドレス範囲を管理します。EC2 Instance Connect プレフィックスリストの名前は次のとおりです。*リージョン* はリージョンコードに置き換えられます。
+ IPv4 プレフィックスリスト名: `com.amazonaws.region.ec2-instance-connect`
+ IPv6 プレフィックスリスト名: `com.amazonaws.region.ipv6.ec2-instance-connect`

**タスクの目標**

インスタンスが配置されているリージョンの IPv4 プレフィックスリストからポート 22 のインバウンド SSH トラフィックを許可するセキュリティグループを作成します。

**EC2 Instance Connect サービスからインスタンスへのインバウンドトラフィックを許可するセキュリティグループを作成する方法**

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

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

1. **[セキュリティグループの作成]** を選択してください。

1. [**基本的な詳細**] で、次の操作を行います。

   1. **[セキュリティグループ名]** に、セキュリティグループのわかりやすい名前を入力してください。

   1. **[説明]** に、セキュリティグループのわかりやすい説明を入力してください。

1. **[インバウンドルール]** で、次の操作を行います。

   1. [**ルールを追加**] を選択してください。

   1. **[タイプ]** で **SSH]** を選択してください。

   1. **[ソース]** は **[カスタム]** のままにします。

   1. **[ソース]** の横にあるフィールドで、EC2 Instance Connect のプレフィックスリストを選択してください。

      例えば、インスタンスが米国東部 (バージニア北部) `us-east-1`リージョンにあり、ユーザーがパブリック IPv4 アドレスに接続する場合は、**[com.amazonaws.us-east-1.ec2-instance-connect]** というプレフィックスリストを選択してください。

1. **[セキュリティグループの作成]** を選択してください。

### アニメーションを表示: セキュリティグループを作成する
<a name="eic-tut1-task2-animation"></a>

![\[このアニメーションでは、セキュリティグループを設定する方法を説明します。このアニメーションのテキストバージョンについては、前述の手順のステップを参照してください。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/tut1-task2-eic-security-group.gif)


## タスク 3: インスタンスを起動する
<a name="eic-tut1-task3"></a>

インスタンスを起動するときは、インスタンスの起動に必要な情報を含む AMI を指定する必要があります。EC2 Instance Connect があらかじめインストールされているかどうかにかかわらず、インスタンスの起動を選択できます。このタスクでは、EC2 Instance Connect にあらかじめインストールされている AMI を指定します。

EC2 Instance Connect のプリインストール無しでインスタンスを起動し、EC2 Instance Connect を使用してインスタンスに接続する場合は、追加の設定手順を実行する必要があります。これらの手順は、このチュートリアルの範囲外です。

**タスクの目標**

EC2 Instance Connect がプリインストールされている Amazon Linux 2023 AMI を使用してインスタンスを起動します。Amazon EC2 コンソールで EC2 Instance Connect を使用してインスタンスに接続できるように、前に作成したセキュリティグループも指定します。EC2 Instance Connect を使用してインスタンスに接続することで、パブリックキーをインスタンスのメタデータにプッシュするため、インスタンスを起動するときに SSH キーを指定する必要はありません。

**Amazon EC2 コンソールで EC2 Instance Connect を使用できるインスタンスを起動するには**

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

1. 画面の上のナビゲーションバーに、現在の AWS リージョンが表示されます (**アイルランド**など)。インスタンスを起動するリージョンを選択してください。特定のリージョンのトラフィックを許可するセキュリティグループを作成したため、インスタンスを起動するのと同じリージョンを選択する必要があり、この選択が重要となります。

1. Amazon EC2 コンソールダッシュボードで、[**インスタンスを起動**] を選択してください。

1. (オプション) **[Names and tags]**(名前とタグ) における **[Name]** (名前) では、インスタンス用にわかりやすい名前を入力してください。

1. **[アプリケーションと OS イメージ (Amazon マシンイメージ)]** で、**[クイックスタート]** を選択してください。**[Amazon Linux]** がデフォルトで選択されています。**[Amazon マシンイメージ (AMI)]** ではデフォルトで、**[Amazon Linux 2023 AMI]** が選択されています。このタスクは既定の選択のままにします。

1. **[インスタンスタイプ]**で、**[インスタンスタイプ]** のデフォルトの選択状態のままにするか、別のインスタンスタイプを選択してください。

1. **[キーペア (ログイン)]** の **[キーペア名]** で、**[キーペアなしで続行 (非推奨)]** を選択してください。EC2 Instance Connect を使用してインスタンスに接続すると、EC2 Instance Connect はキーペアをインスタンスのメタデータにプッシュします。接続に使用されるのはこのキーペアです。

1. **[Network settings]** (ネットワーク設定) で、次の操作を行います：

   1. **[自動割り当てパブリック IP]** は、**[有効]** のままにします。
**注記**  
Amazon EC2 コンソールで EC2 Instance Connect を使用してインスタンスに接続するには、そのインスタンスにパブリック IPv4 または IPv6 アドレスが必要です。

   1. **[ファイアウォール (セキュリティグループ)]** で、**[既存のセキュリティグループを選択する]** を選択してください。

   1. **[共通セキュリティグループ]** で、先ほど作成したセキュリティグループを選択してください。

1. **[Summary]** (サマリー) パネルで、**[Launch instance]** (インスタンスの起動) を選択してください。

### アニメーションを表示: インスタンスを起動する
<a name="eic-tut1-task3-animation"></a>

![\[このアニメーションでは、インスタンスを起動する方法を示します。このアニメーションのテキストバージョンについては、前述の手順のステップを参照してください。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/tut1-task3-launch-an-instance.gif)


## タスク 4: インスタンスに接続する
<a name="eic-tut1-task4"></a>

EC2 Instance Connect を使用してインスタンスに接続すると、EC2 Instance Connect API から SSH パブリックキーが[インスタンスメタデータ](ec2-instance-metadata.md)にプッシュされ、60 秒間保持されます。SSH デーモンは、`AuthorizedKeysCommand` および `AuthorizedKeysCommandUser` を使用して、インスタンスメタデータからパブリックキーを見つけて認証を行い、ユーザーをインスタンスに接続します。

**タスクの目標**

このタスクでは、Amazon EC2 コンソールで EC2 Instance Connect を使用してインスタンスに接続します。前提条件となるタスク 1、2、3 を完了していれば、接続は成功するはずです。

**インスタンスに接続する手順**

インスタンスに接続するには、次の手順に従ってください。手順のアニメーションを見る場合は、「[アニメーションを表示: インスタンスに接続する](#eic-tut1-task4-animation)」を参照してください。

**Amazon EC2 コンソールで EC2 Instance Connect を使用してインスタンスを起動するには**

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

1. 画面の上のナビゲーションバーに、現在の AWS リージョンが表示されます (**アイルランド**など)。インスタンスが存在するリージョンを選択してください。

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

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

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

1. **[パブリック IP を使用して接続]** を選択します。

1. **[接続]**を選択してください。

   ブラウザでターミナルウィンドウが開き、インスタンスに接続されます。

### アニメーションを表示: インスタンスに接続する
<a name="eic-tut1-task4-animation"></a>

![\[このアニメーションでは、EC2 Instance Connect を使用してインスタンスに接続する方法を説明します。このアニメーションのテキストバージョンについては、前述の手順のステップを参照してください。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/eic-tut1-task4-connect.gif)


# EC2 Instance Connect の前提条件
<a name="ec2-instance-connect-prerequisites"></a>

**Topics**
+ [EC2 Instance Connect のインストール](#eic-prereqs-install-eic-on-instance)
+ [ネットワーク接続を確立する](#eic-prereqs-network-access)
+ [インバウンド SSH トラフィックを許可する](#ec2-instance-connect-setup-security-group)
+ [許可を付与する](#eic-prereqs-grant-permissions)
+ [使用するローカルコンピュータに SSH クライアントをインストールする](#eic-prereqs-install-ssh-client)
+ [ユーザー名の要件を満たす](#eic-prereqs-username)

## EC2 Instance Connect のインストール
<a name="eic-prereqs-install-eic-on-instance"></a>

EC2 Instance Connect を使用してインスタンスに接続するには、インスタンスに EC2 Instance Connect がインストールされている必要があります。EC2 Instance Connect にプリインストールされている AMI を使用してインスタンスを起動することも、サポートされている AMI で起動されたインスタンスに EC2 Instance Connect をインストールすることもできます。詳細については、「[EC2 インスタンスでの EC2 Instance Connect のインストール](ec2-instance-connect-set-up.md)」を参照してください。

## ネットワーク接続を確立する
<a name="eic-prereqs-network-access"></a>

インスタンスは、ユーザーがインターネットまたはインスタンスのプライベート IP アドレスを介してインスタンスに接続できるように設定できます。ユーザーが EC2 Instance Connect を使用してインスタンスに接続する方法によって、次のネットワークアクセスを設定する必要があります。
+ ユーザーがインターネット経由でインスタンスに接続する場合、インスタンスはパブリック IPv4または IPv6 アドレスを持ち、インターネットへのルートが設定されたパブリックサブネット内に配置されている必要があります。デフォルトのパブリックサブネットを変更していない場合、IPv4専用のインターネットへのルートが含まれており、IPv6用のルートは含まれていません。詳細については、「*Amazon VPC ユーザーガイド*」の「[インターネットゲートウェイを使用して VPC インターネットアクセスを有効にする](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html#vpc-igw-internet-access)」を参照してください。
+ ユーザーがインスタンスのプライベート IP アドレスを介してインスタンスに接続する場合は、AWS Direct Connect、AWS Site-to-Site VPN、または VPC ピアリングを使用して VPC へのプライベートネットワーク接続を確立し、ユーザーがインスタンスのプライベート IPv4 アドレスに到達できるようにする必要があります。

インスタンスにパブリック IPv4 または IPv6 アドレスがなく、上記のようにネットワークアクセスを設定しない場合は、EC2 Instance Connect エンドポイントを EC2 Instance Connect の代わりとして検討できます。EC2 Instance Connect エンドポイントを使用すると、インスタンスにパブリック IPv4 または IPv6 アドレスがない場合でも、SSH または RDP を使用してインスタンスに接続できます。詳細については、「[Amazon EC2 コンソールを使用した Linux インスタンスへの接続](connect-using-eice.md#connect-using-the-ec2-console)」を参照してください。

## インバウンド SSH トラフィックを許可する
<a name="ec2-instance-connect-setup-security-group"></a>

**Amazon EC2 コンソールを使用してインスタンスに接続するには**  
ユーザーが Amazon EC2 コンソールでインスタンスに接続する場合、インスタンスに到達できるようにする必要があるトラフィックは、EC2 Instance Connect サービスからのトラフィックです。サービスは、プレフィックスリストを通じて AWS を管理する特定の IP アドレス範囲によって識別されます。EC2 Instance Connect サービスからインバウンド SSH トラフィックを許可するセキュリティグループを作成する必要があります。これを設定するには、インバウンドルールの **[ソース]** の横にあるフィールドで、EC2 Instance Connect プレフィックスリストを選択してください。

AWS は、各リージョンの IPv4 アドレスと IPv6 アドレスの異なる管理されたプレフィックスリストを提供します。EC2 Instance Connect プレフィックスリストの名前は次のとおりです。*リージョン* はリージョンコードに置き換えられます。
+ IPv4 プレフィックスリスト名: `com.amazonaws.region.ec2-instance-connect`
+ IPv6 プレフィックスリスト名: `com.amazonaws.region.ipv6.ec2-instance-connect`

セキュリティグループの作成方法については、「[タスク 2: EC2 Instance Connect サービスからインスタンスへのインバウンドトラフィックを許可する](ec2-instance-connect-tutorial.md#eic-tut1-task2)」を参照してください。詳細については、「*Amazon VPC ユーザーガイド*」の「[AWS 管理されたプレフィックスリストの提供](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-aws-managed-prefix-lists.html#available-aws-managed-prefix-lists)」を参照してください。

**CLI または SSH を使用してインスタンスに接続するには**  
インスタンスに関連付けられているセキュリティグループで、IP アドレスまたはネットワークからの[インバウンド SSH トラフィック](security-group-rules-reference.md#sg-rules-local-access)がポート 22 で許可されることを確認します。VPC のデフォルトのセキュリティグループでは、着信 SSH トラフィックはデフォルトでは許可されません。インスタンス起動ウィザードで作成されたセキュリティグループは、デフォルトで受信 SSH トラフィックを許可します。詳細については、「[コンピュータからのインスタンスへの接続ルール](security-group-rules-reference.md#sg-rules-local-access)」を参照してください。

## 許可を付与する
<a name="eic-prereqs-grant-permissions"></a>

EC2 Instance Connect を使用してインスタンスに接続するすべての IAM ユーザーに、必要なアクセス許可を付与する必要があります。詳細については、「[IAM への EC2 Instance Connect のアクセス許可の付与](ec2-instance-connect-configure-IAM-role.md)」を参照してください。

## 使用するローカルコンピュータに SSH クライアントをインストールする
<a name="eic-prereqs-install-ssh-client"></a>

ユーザーが SSH を使用して接続する場合、ローカルコンピュータに SSH クライアントがあることを確認する必要があります。

ほとんどの場合、ユーザーのローカルコンピュータにはデフォルトで SSH クライアントがインストールされています。SSH クライアントがあるかどうかを確認するには、コマンドラインで **ssh** と入力してください。使用するローカルコンピュータでこのコマンドが認識されない場合、SSH クライアントをインストールできます。Linux または macOS X に SSH クライアントをインストールする詳細については、[http://www.openssh.com](http://www.openssh.com/)を参照してください。Windows 10 に SSH クライアントをインストールする詳細については、[Windows の OpenSSH](https://learn.microsoft.com/en-us/windows-server/administration/OpenSSH/openssh-overview)を参照してください。

ユーザーが Amazon EC2 コンソールのみを使用してインスタンスに接続する場合、ローカルコンピュータに SSH クライアントをインストールする必要はありません。

## ユーザー名の要件を満たす
<a name="eic-prereqs-username"></a>

EC2 Instance Connect を使用してインスタンスに接続する場合、ユーザー名は次の要件を満たす必要があります。
+ 1 字目: アルファベット (`A-Z`、`a-z`)、数字 (`0-9`)、下線 `_`のいずれか。
+ 後続には、アルファベット (`A-Z`、`a-z`)、数字 (`0-9`)、または以下の文字を使用できます: `@ . _ -`
+ 最小長: 1 文字
+ 最大長: 31 文字

# IAM への EC2 Instance Connect のアクセス許可の付与
<a name="ec2-instance-connect-configure-IAM-role"></a>

EC2 Instance Connect を使用してインスタンスに接続するには、以下のアクションと条件に対するアクセス許可をユーザーに付与する IAM ポリシーを作成する必要があります。
+ `ec2-instance-connect:SendSSHPublicKey` アクション – パブリックキーをインスタンスにプッシュするためのアクセス許可を付与します。
+ `ec2:osuser` 条件 – パブリックキーをインスタンスにプッシュできる OS ユーザーの名前を指定します。インスタンスの起動に使用した AMI のデフォルトのユーザー名を使用します。デフォルトのユーザー名は AL2023 と Amazon Linux 2 では `ec2-user`、Ubuntu では `ubuntu` です。
+ `ec2:DescribeInstances` アクション — ラッパーがこのアクションを呼び出すため、EC2 コンソールを使用するときに必要です。ユーザーには、別のポリシーからこのアクションを呼び出すためのアクセス許可が既に付与されている場合があります。
+ `ec2:DescribeVpcs` アクション – IPv6 アドレスに接続するときに必要です。

特定の EC2 インスタンスへのアクセスを制限することを検討してください。それ以外の場合、`ec2-instance-connect:SendSSHPublicKey` アクションのアクセス許可を持つすべての IAM プリンシパルは、すべての EC2 インスタンスに接続できます。リソース ARN を指定するか、リソースタグを[条件キー](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2instanceconnect.html#amazonec2instanceconnect-policy-keys)として使用して、アクセスを制限することができます。

詳細については、[Amazon EC2 Instance Connect のアクション、リソース、および条件キー ](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2instanceconnect.html)を参照してください。

IAM ポリシーの作成について詳しくは、「*IAM ユーザーガイド*」の「[IAM ポリシーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)」を参照してください。

## ユーザーに特定のインスタンスへの接続を許可
<a name="eic-permissions-allow-users-to-connect-to-specific-instances"></a>

次の IAM ポリシーは、リソース ARN で識別される特定のインスタンスに接続するアクセス許可を付与します。

次の IAM ポリシーの例では、以下のアクションと条件が指定されています。
+ `ec2-instance-connect:SendSSHPublicKey` アクションは、リソース ARN で指定された 2 つのインスタンスに接続するためのアクセス許可をユーザーに付与します。*すべての* EC2 インスタンスに接続するためのアクセス許可をユーザーに付与するには、リソース ARN を `*` (ワイルドカード) に置き換えます。
+ `ec2:osuser` 条件により、接続時に *ami-username* が指定されている場合にのみ、インスタンスに接続するためのアクセス許可が付与されます。
+ `ec2:DescribeInstances` アクションは、コンソールを使用してインスタンスに接続するユーザーにアクセス許可を付与するように指定されます。ユーザーが SSH クライアントのみを使用してインスタンスに接続する場合は、`ec2:DescribeInstances` を省略できます。`ec2:Describe*` API アクションはリソースレベルのアクセス許可をサポートしないことに注意してください。したがって、`Resource` の要素には、`*` (ワイルドカード) が必要です。
+ `ec2:DescribeVpcs` アクションは、IPv6 アドレスでインスタンスに接続するために、コンソールを使用してユーザーにアクセス許可を付与するように指定されます。ユーザーがパブリック IPv4 アドレスのみを使用する場合は、`ec2:DescribeVpcs` を省略できます。`ec2:Describe*` API アクションはリソースレベルのアクセス許可をサポートしないことに注意してください。したがって、`Resource` の要素には、`*` (ワイルドカード) が必要です。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "ec2-instance-connect:SendSSHPublicKey",
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:instance/i-1234567890abcdef0",
                "arn:aws:ec2:us-east-1:111122223333:instance/i-0598c7d356eba48d7"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:osuser": "ami-username"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeVpcs"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## ユーザーに特定のタグを持つインスタンスへの接続を許可
<a name="eic-permissions-allow-users-to-connect-to-instances-with-specific-tags"></a>

属性ベースのアクセス制御 (ABAC) は、ユーザーおよび AWS リソースにアタッチできるタグに基づいてアクセス許可を定義する認可戦略です。リソースタグを使用してインスタンスへのアクセスを制御することもできます。AWS リソースへのアクセスを制御するタグの使用の詳細については、「*IAM ユーザーガイド*」の「[AWS リソースへのアクセス制御](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-resources)」を参照してください。

次の IAM ポリシーの例では、`ec2-instance-connect:SendSSHPublicKey` アクションは、インスタンスに key=`tag-key` と value=`tag-value` が付いたリソースタグが割り当てられていることを条件に、(リソース ARN の `*` (ワイルドカード) で示される) 任意のインスタンスに接続するためのアクセス許可をユーザーに付与します。

`ec2:DescribeInstances` アクションは、コンソールを使用してインスタンスに接続するユーザーにアクセス許可を付与するように指定されます。ユーザーが SSH クライアントのみを使用してインスタンスに接続する場合は、`ec2:DescribeInstances` を省略できます。`ec2:Describe*` API アクションはリソースレベルのアクセス許可をサポートしないことに注意してください。したがって、`Resource` の要素には、`*` (ワイルドカード) が必要です。

`ec2:DescribeVpcs` アクションは、IPv6 アドレスでインスタンスに接続するために、コンソールを使用してユーザーにアクセス許可を付与するように指定されます。ユーザーがパブリック IPv4 アドレスのみを使用する場合は、`ec2:DescribeVpcs` を省略できます。`ec2:Describe*` API アクションはリソースレベルのアクセス許可をサポートしないことに注意してください。したがって、`Resource` の要素には、`*` (ワイルドカード) が必要です。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "ec2-instance-connect:SendSSHPublicKey", 
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/tag-key": "tag-value"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeVpcs"
            ],
            "Resource": "*"
        }
    ]
}
```

------

# EC2 インスタンスでの EC2 Instance Connect のインストール
<a name="ec2-instance-connect-set-up"></a>

EC2 Instance Connect を使用して Linux インスタンスに接続するには、EC2 Instance Connect がインストールされている必要があります。EC2 Instance Connect をインストールすると、インスタンスに SSH デーモンが設定されます。

EC2 Instance Connect パッケージの詳細については、GitHub ウェブサイトの「[aws/aws-ec2-instance-connect-config](https://github.com/aws/aws-ec2-instance-connect-config)」を参照してください。

**注記**  
SSH 認証の `AuthorizedKeysCommand` および `AuthorizedKeysCommandUser` 設定を構成した場合、EC2 Instance Connect をインストールしても更新されません。そのため、EC2 Instance Connect は使用できません。

## インストール条件
<a name="ec2-instance-connect-install-prerequisites"></a>

EC2 Instance Connect をインストールする前に、以下の前提条件を満たしていることを確認してください。
+ **インスタンスが以下のいずれかを使用していることを確認します。**
  + バージョン 2.0.20190618 より前の Amazon Linux 2 \$1
  + AL2023 最小 AMI または Amazon ECS 最適化 AMI
  + CentOS Stream 8 および 9
  + 14.2.1 より前の MacOS Sonoma、13.6.3 より前の Ventura、12.7.2 より前の Monterey \$1
  + Red Hat Enterprise Linux (RHEL) 8 および 9
  + Ubuntu 16.04 および 18.04
**ヒント**  
\$1 Amazon Linux 2、MacOS、Ubuntu の場合: 上記のバージョンよりも新しいバージョンを使用してインスタンスを起動した場合、EC2 Instance Connect はプリインストールされており、手動インストールは不要です。
+ **EC2 Instance Connect の一般的な前提条件を確認します。**

  詳細については、「[EC2 Instance Connect の前提条件](ec2-instance-connect-prerequisites.md)」を参照してください。
+ **ローカルマシン上の SSH クライアントを使用してインスタンスに接続するための前提条件を確認します。**

  詳細については、「[SSH を使用した Linux インスタンスへの接続](connect-to-linux-instance.md)」を参照してください。
+ **インスタンスの ID を取得します。**

  自分のインスタンスの ID は、Amazon EC2 コンソールを使用して ([**インスタンス ID**] 列から) 取得できます。その代わりに、[describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) AWS CLIまたは [Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) AWS Tools for Windows PowerShellコマンドを使用することもできます。

## EC2 Instance Connect を手動でインストールする
<a name="ec2-instance-connect-install"></a>

**注記**  
以下のいずれかの AMI を使用してインスタンスを起動した場合は、EC2 Instance Connect がプリインストールされているため、このステップをスキップできます。  
AL2023 標準 AMI
Amazon Linux 2 2.0.20190618 以降
macOS Sonoma 14.2.1 以降
macOS Ventura 13.6.3 以降
macOS Monterey 12.7.2 以降
Ubuntu 20.04 以降

インスタンスのオペレーティングシステムに応じて、以下のいずれかの手順を使用して EC2 Instance Connect をインストールします。

------
#### [ Amazon Linux 2 ]

**EC2 Instance Connect を Amazon Linux 2 で起動したインスタンスにインストールするには**

1. SSH を使用してインスタンスに接続します。

   次のコマンド内のサンプル値を独自の値に置き換えます。インスタンスの起動時にインスタンスに割り当てた SSH キーペアと、インスタンスを起動するために使用した AMI のデフォルトのユーザー名を使用します。Amazon Linux 2 の場合、デフォルトのユーザー名は `ec2-user` です。

   ```
   $ ssh -i my_ec2_private_key.pem ec2-user@ec2-a-b-c-d.us-west-2.compute.amazonaws.com
   ```

   インスタンスへの接続の詳細については[SSH クライアントを使用して Linux インスタンスに接続する](connect-linux-inst-ssh.md)を参照してください。

1. インスタンスに EC2 Instance Connect パッケージをインストールします。

   ```
   [ec2-user ~]$ sudo yum install ec2-instance-connect
   ```

   3 つの新しいスクリプトが `/opt/aws/bin/` フォルダに表示されます。

   ```
   eic_curl_authorized_keys
   eic_parse_authorized_keys
   eic_run_authorized_keys
   ```

1. (オプション) EC2 Instance Connect がインスタンスに正常にインストールされたことを確認します。

   ```
   [ec2-user ~]$ sudo less /etc/ssh/sshd_config
   ```

   `AuthorizedKeysCommand` 行と `AuthorizedKeysCommandUser` 行に以下の値が含まれていれば、EC2 Instance Connect は正常にインストールされています。

   ```
   AuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys %u %f
   AuthorizedKeysCommandUser ec2-instance-connect
   ```
   + `AuthorizedKeysCommand` は、インスタンスメタデータからキーを探すように `eic_run_authorized_keys` スクリプトを設定します。
   + `AuthorizedKeysCommandUser` は、システムユーザーを `ec2-instance-connect` として設定します。
**注記**  
`AuthorizedKeysCommand` や `AuthorizedKeysCommandUser` を設定済みである場合は、EC2 Instance Connect をインストールしても値は変更されないため、EC2 Instance Connect は使用できません。

------
#### [ CentOS ]

**EC2 Instance Connect を CentOS で起動したインスタンスにインストールするには**

1. SSH を使用してインスタンスに接続します。

   次のコマンド内のサンプル値を独自の値に置き換えます。インスタンスの起動時にインスタンスに割り当てた SSH キーペアと、インスタンスを起動するために使用した AMI のデフォルトのユーザー名を使用します。CentOS の場合、デフォルトのユーザー名は `centos` または `ec2-user` です。

   ```
   $ ssh -i my_ec2_private_key.pem centos@ec2-a-b-c-d.us-west-2.compute.amazonaws.com
   ```

   インスタンスへの接続の詳細については[SSH クライアントを使用して Linux インスタンスに接続する](connect-linux-inst-ssh.md)を参照してください。

1. HTTP または HTTPS プロキシを使用する場合は、現在のシェルセッションで `http_proxy` または `https_proxy` の環境変数を設定する必要があります。

   プロキシを使用していない場合は、この手順を省略できます。
   + HTTP プロキシサーバーの場合は、次のコマンドを実行します。

     ```
     $ export http_proxy=http://hostname:port
     $ export https_proxy=http://hostname:port
     ```
   + HTTPS プロキシサーバーの場合は、次のコマンドを実行します。

     ```
     $ export http_proxy=https://hostname:port
     $ export https_proxy=https://hostname:port
     ```

1. 次のコマンドを実行して、インスタンスに EC2 Instance Connect パッケージをインストールします。

   CentOS 用の EC2 Instance Connect 設定ファイルは Red Hat Package Manager (RPM) パッケージで提供され、CentOS 8 と CentOS 9 用の異なる RPM パッケージ、および Intel/AMD (x86\$164) または ARM (AArch64) で実行されるインスタンスタイプ用の異なる RPM パッケージが含まれています。

   オペレーティングシステムと CPU アーキテクチャに合ったコマンドブロックを使用してください。
   + CentOS 8

     Intel/AMD (x86\$164)

     ```
     [ec2-user ~]$ mkdir /tmp/ec2-instance-connect
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-2.0.0-5.rhel8.x86_64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-selinux-2.0.0-5.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     ```

     ARM (AArch64)

     ```
     [ec2-user ~]$ mkdir /tmp/ec2-instance-connect
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect-2.0.0-5.rhel8.aarch64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect-selinux-2.0.0-5.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     ```
   + CentOS 9

     Intel/AMD (x86\$164)

     ```
     [ec2-user ~]$ mkdir /tmp/ec2-instance-connect
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-2.0.0-5.rhel9.x86_64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-selinux-2.0.0-5.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     ```

     ARM (AArch64)

     ```
     [ec2-user ~]$ mkdir /tmp/ec2-instance-connect
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect-2.0.0-5.rhel9.aarch64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect-selinux-2.0.0-5.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     ```

   次の新しいスクリプトが `/opt/aws/bin/` フォルダに表示されます。

   ```
   eic_run_authorized_keys
   ```

1. (オプション) EC2 Instance Connect がインスタンスに正常にインストールされたことを確認します。
   + CentOS 8 の場合:

     ```
     [ec2-user ~]$ sudo less /lib/systemd/system/sshd.service.d/ec2-instance-connect.conf
     ```
   + CentOS 9 の場合:

     ```
     [ec2-user ~]$ sudo less /etc/ssh/sshd_config.d/60-ec2-instance-connect.conf
     ```

   `AuthorizedKeysCommand` 行と `AuthorizedKeysCommandUser` 行に以下の値が含まれていれば、EC2 Instance Connect は正常にインストールされています。

   ```
   AuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys %u %f
   AuthorizedKeysCommandUser ec2-instance-connect
   ```
   + `AuthorizedKeysCommand` は、インスタンスメタデータからキーを探すように `eic_run_authorized_keys` スクリプトを設定します。
   + `AuthorizedKeysCommandUser` は、システムユーザーを `ec2-instance-connect` として設定します。
**注記**  
`AuthorizedKeysCommand` や `AuthorizedKeysCommandUser` を設定済みである場合は、EC2 Instance Connect をインストールしても値は変更されないため、EC2 Instance Connect は使用できません。

------
#### [ macOS ]

**EC2 Instance Connect を macOS で起動したインスタンスにインストールするには**

1. SSH を使用してインスタンスに接続します。

   次のコマンド内のサンプル値を独自の値に置き換えます。インスタンスの起動時にインスタンスに割り当てた SSH キーペアと、インスタンスを起動するために使用した AMI のデフォルトのユーザー名を使用します。macOS インスタンスの場合、デフォルトのユーザー名は `ec2-user` です。

   ```
   $ ssh -i my_ec2_private_key.pem ec2-user@ec2-a-b-c-d.us-west-2.compute.amazonaws.com
   ```

   インスタンスへの接続の詳細については[SSH クライアントを使用して Linux インスタンスに接続する](connect-linux-inst-ssh.md)を参照してください。

1. 次のコマンドを使用して Homwbrew を更新します。このアップデートでは、Homebrew が認識しているソフトウェアが一覧表示されます。EC2 Instance Connect パッケージは、macOS インスタンスでは Homebrew 経由で提供されます。詳細については、「[Amazon EC2 Mac インスタンス上のオペレーティングシステムとソフトウェアの更新](mac-instance-updates.md)」を参照してください。

   ```
   [ec2-user ~]$ brew update
   ```

1. インスタンスに EC2 Instance Connect パッケージをインストールします。これによりソフトウェアがインストールされ、sshd がそれを使用するように設定されます。

   ```
   [ec2-user ~]$ brew install ec2-instance-connect
   ```

   次の新しいスクリプトが `/opt/aws/bin/` フォルダに表示されます。

   ```
   eic_run_authorized_keys
   ```

1. (オプション) EC2 Instance Connect がインスタンスに正常にインストールされたことを確認します。

   ```
   [ec2-user ~]$ sudo less /etc/ssh/sshd_config.d/60-ec2-instance-connect.conf
   ```

   `AuthorizedKeysCommand` 行と `AuthorizedKeysCommandUser` 行に以下の値が含まれていれば、EC2 Instance Connect は正常にインストールされています。

   ```
   AuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys %u %f
   AuthorizedKeysCommandUser ec2-instance-connect
   ```
   + `AuthorizedKeysCommand` は、インスタンスメタデータからキーを探すように `eic_run_authorized_keys` スクリプトを設定します。
   + `AuthorizedKeysCommandUser` は、システムユーザーを `ec2-instance-connect` として設定します。
**注記**  
`AuthorizedKeysCommand` や `AuthorizedKeysCommandUser` を設定済みである場合は、EC2 Instance Connect をインストールしても値は変更されないため、EC2 Instance Connect は使用できません。

------
#### [ RHEL ]

**EC2 Instance Connect を Red Hat Enterprise Linux (RHEL) で起動したインスタンスにインストールするには**

1. SSH を使用してインスタンスに接続します。

   次のコマンド内のサンプル値を独自の値に置き換えます。インスタンスの起動時にインスタンスに割り当てた SSH キーペアと、インスタンスを起動するために使用した AMI のデフォルトのユーザー名を使用します。RHEL の場合、デフォルトのユーザー名は `ec2-user` または `root` です。

   ```
   $ ssh -i my_ec2_private_key.pem ec2-user@ec2-a-b-c-d.us-west-2.compute.amazonaws.com
   ```

   インスタンスへの接続の詳細については[SSH クライアントを使用して Linux インスタンスに接続する](connect-linux-inst-ssh.md)を参照してください。

1. HTTP または HTTPS プロキシを使用する場合は、現在のシェルセッションで `http_proxy` または `https_proxy` の環境変数を設定する必要があります。

   プロキシを使用していない場合は、この手順を省略できます。
   + HTTP プロキシサーバーの場合は、次のコマンドを実行します。

     ```
     $ export http_proxy=http://hostname:port
     $ export https_proxy=http://hostname:port
     ```
   + HTTPS プロキシサーバーの場合は、次のコマンドを実行します。

     ```
     $ export http_proxy=https://hostname:port
     $ export https_proxy=https://hostname:port
     ```

1. 次のコマンドを実行して、インスタンスに EC2 Instance Connect パッケージをインストールします。

   RHEL 用の EC2 Instance Connect 設定ファイルは Red Hat Package Manager (RPM) パッケージで提供され、RHEL 8 と RHEL 9 用の異なる RPM パッケージ、および Intel/AMD (x86\$164) または ARM (AArch64) で実行されるインスタンスタイプ用の異なる RPM パッケージが含まれています。

   オペレーティングシステムと CPU アーキテクチャに合ったコマンドブロックを使用してください。
   + RHEL 8

     Intel/AMD (x86\$164)

     ```
     [ec2-user ~]$ mkdir /tmp/ec2-instance-connect
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-2.0.0-5.rhel8.x86_64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-selinux-2.0.0-5.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     ```

     ARM (AArch64)

     ```
     [ec2-user ~]$ mkdir /tmp/ec2-instance-connect
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect-2.0.0-5.rhel8.aarch64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect-selinux-2.0.0-5.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     ```
   + RHEL 9

     Intel/AMD (x86\$164)

     ```
     [ec2-user ~]$ mkdir /tmp/ec2-instance-connect
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-2.0.0-5.rhel9.x86_64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-selinux-2.0.0-5.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     ```

     ARM (AArch64)

     ```
     [ec2-user ~]$ mkdir /tmp/ec2-instance-connect
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect-2.0.0-5.rhel9.aarch64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
     [ec2-user ~]$ curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_arm64/ec2-instance-connect-selinux-2.0.0-5.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     [ec2-user ~]$ sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
     ```

   次の新しいスクリプトが `/opt/aws/bin/` フォルダに表示されます。

   ```
   eic_run_authorized_keys
   ```

1. (オプション) EC2 Instance Connect がインスタンスに正常にインストールされたことを確認します。
   + RHEL 8 の場合:

     ```
     [ec2-user ~]$ sudo less /lib/systemd/system/sshd.service.d/ec2-instance-connect.conf
     ```
   + RHEL 9 の場合:

     ```
     [ec2-user ~]$ sudo less /etc/ssh/sshd_config.d/60-ec2-instance-connect.conf
     ```

   `AuthorizedKeysCommand` 行と `AuthorizedKeysCommandUser` 行に以下の値が含まれていれば、EC2 Instance Connect は正常にインストールされています。

   ```
   AuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys %u %f
   AuthorizedKeysCommandUser ec2-instance-connect
   ```
   + `AuthorizedKeysCommand` は、インスタンスメタデータからキーを探すように `eic_run_authorized_keys` スクリプトを設定します。
   + `AuthorizedKeysCommandUser` は、システムユーザーを `ec2-instance-connect` として設定します。
**注記**  
`AuthorizedKeysCommand` や `AuthorizedKeysCommandUser` を設定済みである場合は、EC2 Instance Connect をインストールしても値は変更されないため、EC2 Instance Connect は使用できません。

------
#### [ Ubuntu ]

**EC2 Instance Connect を Ubuntu 16.04 で起動したインスタンスにインストールするには**

1. SSH を使用してインスタンスに接続します。

   次のコマンド内のサンプル値を独自の値に置き換えます。インスタンスの起動時にインスタンスに割り当てた SSH キーペアを使用し、インスタンスを起動するために使用した AMI のデフォルトのユーザー名を使用します。Ubuntu AMI の場合、ユーザー名は `ubuntu` です。

   ```
   $ ssh -i my_ec2_private_key.pem ubuntu@ec2-a-b-c-d.us-west-2.compute.amazonaws.com
   ```

   インスタンスへの接続の詳細については[SSH クライアントを使用して Linux インスタンスに接続する](connect-linux-inst-ssh.md)を参照してください。

1. (オプション) インスタンスに最新の Ubuntu AMI があることを確認します。

   次のコマンドを実行して、インスタンスのすべてのパッケージを更新します。

   ```
   ubuntu:~$ sudo apt-get update
   ```

   ```
   ubuntu:~$ sudo apt-get upgrade
   ```

1. インスタンスに EC2 Instance Connect パッケージをインストールします。

   ```
   ubuntu:~$ sudo apt-get install ec2-instance-connect
   ```

   3 つの新しいスクリプトが `/usr/share/ec2-instance-connect/` フォルダに表示されます。

   ```
   eic_curl_authorized_keys
   eic_parse_authorized_keys
   eic_run_authorized_keys
   ```

1. (オプション) EC2 Instance Connect がインスタンスに正常にインストールされたことを確認します。

   ```
   ubuntu:~$ sudo less /lib/systemd/system/ssh.service.d/ec2-instance-connect.conf
   ```

   `AuthorizedKeysCommand` 行と `AuthorizedKeysCommandUser` 行に以下の値が含まれていれば、EC2 Instance Connect は正常にインストールされています。

   ```
   AuthorizedKeysCommand /usr/share/ec2-instance-connect/eic_run_authorized_keys %%u %%f
   AuthorizedKeysCommandUser ec2-instance-connect
   ```
   + `AuthorizedKeysCommand` は、インスタンスメタデータからキーを探すように `eic_run_authorized_keys` スクリプトを設定します。
   + `AuthorizedKeysCommandUser` は、システムユーザーを `ec2-instance-connect` として設定します。
**注記**  
`AuthorizedKeysCommand` や `AuthorizedKeysCommandUser` を設定済みである場合は、EC2 Instance Connect をインストールしても値は変更されないため、EC2 Instance Connect は使用できません。

------

# EC2 Instance Connect を使用して Linux インスタンスに接続する
<a name="ec2-instance-connect-methods"></a>

以下の手順では、Amazon EC2 コンソール、AWS CLI、または SSH クライアントから EC2 Instance Connect を使用して Linux インスタンスに接続する方法について説明します。

EC2 Instance Connect を使用してインスタンスに接続するとAWS CLI、EC2 Instance Connect API [ から SSH パブリック](ec2-instance-metadata.md)キーがインスタンスメタデータにプッシュされ、60 秒間保持されます。ユーザーにアタッチされた IAM ポリシーは、このアクションを承認します。独自の SSH キーを使用する場合は、SSH クライアントを使用し、EC2 Instance Connect を使用して SSH キーをインスタンスに明示的にプッシュできます。

**考慮事項**  
EC2 Instance Connect を使用してインスタンスに接続した後、接続は SSH セッションが終了するまで維持されます。接続の期間は、IAM 認証情報の期間によって決定されません。IAM 認証情報の有効期限が切れても、接続は維持されます。EC2 Instance Connect コンソールエクスペリエンスを使用しているときに IAM 認証情報の有効期限が切れた場合は、ブラウザページを閉じて接続を終了します。独自の SSH クライアントと EC2 Instance Connect を使用してキーをプッシュする場合は、SSH タイムアウト値を設定して SSH セッションを自動的に終了できます。

**要件**  
始める前に、[前提条件](ec2-instance-connect-prerequisites.md)を確認してください。

**Topics**
+ [Amazon EC2 コンソールを使用した接続](#ec2-instance-connect-connecting-console)
+ [AWS CLI を使用して接続する](#connect-linux-inst-eic-cli-ssh)
+ [独自のキーと SSH クライアントを使用して接続する](#ec2-instance-connect-connecting-aws-cli)
+ [トラブルシューティング](#ic-troubleshoot)

## Amazon EC2 コンソールを使用した接続
<a name="ec2-instance-connect-connecting-console"></a>

Amazon EC2 コンソールから EC2 Instance Connect を使用してインスタンスに接続できます。

**要件**  
Amazon EC2 コンソールを使用して接続するには、インスタンスにパブリック IPv4 または IPv6 アドレスが必要です。インスタンスにプライベート IPv4 アドレスのみが存在する場合は、[ec2-instance-connectAWS CLIコマンド](#connect-linux-inst-eic-cli-ssh) を使用して接続できます。

**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. 選択する場合は、接続する IP アドレスを選択してください。それ以外の場合は、IP アドレスが自動的に選択されます。

1. **[ユーザー名]** でユーザー名を確認します。

1. **コネクト** を選択して接続を確立します。ブラウザ内ターミナルウィンドウが開きます。

## AWS CLI を使用して接続する
<a name="connect-linux-inst-eic-cli-ssh"></a>

[ec2-instance-connect](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/index.html) AWS CLI コマンドを使用すると、SSH クライアントを使用してインスタンスに接続できます。EC2 Instance Connect は、指定された接続タイプに基づいて、事前定義された順序で使用可能な IP アドレスを使用して接続を確立しようとします。IP アドレスが使用できない場合、次の IP アドレスを順番に自動的に試行します。接続タイプ

`auto` (デフォルト)  
EC2 は、次の順序でインスタンスの IP アドレスを使用し、対応する接続タイプを使用して接続を試みます。  

1. パブリック IPv4: `direct`

1. プライベート IPv4: `eice`

1. IPv6: `direct`

`direct`  
EC2 は、次の順序でインスタンスの IP アドレスを使用して接続を試みます。  

1. パブリック IPv4

1. IPv6

1. プライベート IPv4 (EC2 Instance Connect エンドポイント経由で接続しない）

`eice`  
EC2 Instance Connect は、インスタンスのプライベート IPv4 アドレスと [EC2 Instance Connect エンドポイント](connect-with-ec2-instance-connect-endpoint.md) を使用して接続を試みます。

**注記**  
将来的には、`auto` 接続タイプの動作を変更する可能性があります。希望する接続タイプが確実に使用されるようにするには、`--connection-type` を `direct` または `eice` のいずれかに明示的に設定することをお勧めします。

**要件**  
AWS CLI バージョン 2 を使用する必要があります。詳細については、「[AWS CLI の最新バージョンを使用してインストールまたは更新を行う](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

**インスタンス ID を使用してインスタンスに接続するには**  
インスタンス ID のみがわかっていて、インスタンスへの接続時に使用する接続タイプを EC2 Instance Connect に決定させる場合、インスタンス ID に [ec2-instance-connect ssh](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/ssh.html) の CLI コマンドを使用します。

```
aws ec2-instance-connect ssh --instance-id i-1234567890example
```

**インスタンス ID と EC2 Instance Connect エンドポイントを使用してインスタンスに接続するには**  
[EC2 Instance Connect エンドポイント](connect-with-ec2-instance-connect-endpoint.md) を介してインスタンスに接続する場合は、前述のコマンドを使用し、`--connection-type` パラメータと `eice` 値も指定します。

```
aws ec2-instance-connect ssh --instance-id i-1234567890example --connection-type eice
```

**インスタンス ID と独自のプライベートキーファイルを使用してインスタンスに接続するには**  
独自のプライベートキーを使用して EC2 Instance Connect エンドポイント経由でインスタンスに接続する場合は、インスタンス ID とプライベートキーファイルへのパスを指定します。パスに *file://*を含めないでください。次のようなパスは失敗します: *file:///path/to/key*。

```
aws ec2-instance-connect ssh --instance-id i-1234567890example --private-key-file /path/to/key.pem
```

**ヒント**  
このコマンドの使用時にエラーが発生した場合は、`ssh` パラメータがこのメジャーバージョンでのみ使用できるため、AWS CLI バージョン 2 を使用していることを確認してください。また、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)」を参照してください。

## 独自のキーと SSH クライアントを使用して接続する
<a name="ec2-instance-connect-connecting-aws-cli"></a>

EC2 Instance Connect API の使用中に、独自の SSH キーを使用して、選択した SSH クライアントからインスタンスに接続できます。これは、インスタンスにパブリックキーをプッシュする EC2 Instance Connect 機能からメリットを得ることを可能にします。この接続方法は、パブリック IP アドレスとプライベート IP アドレスを持つインスタンスに対して機能します。

**要件**
+ キーペアの要件
  + サポートされているタイプ: RSA (OpenSSH および SSH2) および ED25519
  + サポートされている長さ: 2048 および 4096
  + 詳細については、「[サードパーティー製のツールを使用してキーペアを作成し、Amazon EC2 にパブリックキーをインポートする](create-key-pairs.md#how-to-generate-your-own-key-and-import-it-to-aws)」を参照してください。
+ プライベート IP アドレスのみがあるインスタンスに接続する場合、SSH セッションを開始するローカルコンピュータには、EC2 Instance Connect サービスエンドポイントへの接続 (SSH パブリックキーをインスタンスにプッシュするため) と、SSH セッションを確立するためのインスタンスのプライベート IP アドレスへのネットワーク接続が必要です。EC2 Instance Connect のサービスエンドポイントには、インターネットまたは Direct Connect パブリック仮想インターフェイス経由で到達が可能です。インスタンスのプライベート IP アドレスに接続するには、[Direct Connect](https://aws.amazon.com/directconnect/)、[AWS Site-to-Site VPN](https://aws.amazon.com/vpn/) や [VPC ピアリング](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html)などのサービスを利用できます。

**独自のキーと任意の SSH クライアントを使用してインスタンスに接続するには**

1. 

**(オプション) 新しい SSH プライベートキーとパブリックキーを生成する**

   新しい SSH プライベートキーとパブリックキー (`my_key` および `my_key.pub`) は、次のコマンドを使用して生成できます。

   ```
   ssh-keygen -t rsa -f my_key
   ```

1. 

**SSH パブリックキーをインスタンスにプッシュする**

   [https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/send-ssh-public-key.html](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/send-ssh-public-key.html) コマンドを使用して、SSH パブリックキーをインスタンスにプッシュします。AL2023 または Amazon Linux 2 を使用してインスタンスを起動した場合、AMI のデフォルトのユーザー名は `ec2-user` です。Ubuntu を使用してインスタンスを起動した場合、AMI のデフォルトのユーザー名は `ubuntu` です。

   以下に、`ec2-user` を認証するために、指定されたアベイラビリティーゾーンで指定されたインスタンスにパブリックキーをプッシュする例を示しています。

   ```
   aws ec2-instance-connect send-ssh-public-key \
       --region us-west-2 \
       --availability-zone us-west-2b \
       --instance-id i-001234a4bf70dec41EXAMPLE \
       --instance-os-user ec2-user \
       --ssh-public-key file://my_key.pub
   ```

1. 

**プライベートキーを使用してインスタンスに接続する**

   パブリックキーがインスタンスメタデータから削除される前に (削除されるまでの時間は 60 秒です)、プライベートキーを使用してインスタンスに接続するには、**ssh** コマンドを使用します。パブリックキーに対応するプライベートキー、インスタンスを起動するために使用した AMI のデフォルトのユーザー名、およびインスタンスのパブリック DNS 名を指定します (プライベートネットワーク経由で接続する場合は、プライベート DNS 名または IP アドレスを指定します)。`IdentitiesOnly=yes` オプションを追加し、ssh config 内のファイルと指定したキーのみが接続に使用されるようにします。

   ```
   ssh -o "IdentitiesOnly=yes" -i my_key ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com
   ```

   次の例では、`timeout 3600` を使用して SSH セッションが 1 時間後に終了するように設定します。セッション中に開始されたプロセスは、セッション終了後もインスタンスで実行し続ける場合があります。

   ```
   timeout 3600 ssh -o “IdentitiesOnly=yes” -i my_key ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com
   ```

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

インスタンスへの接続を試みた際にエラーが発生した場合は、以下を参照してください。
+ [Amazon EC2 Linux インスタンスへの接続に関する問題のトラブルシューティング](TroubleshootingInstancesConnecting.md)
+ [EC2 Instance Connect を使用して EC2 インスタンスへ接続しようとしたときの問題をトラブルシューティングするにはどうすればよいですか?](https://repost.aws/knowledge-center/ec2-instance-connect-troubleshooting)

# EC2 Instance Connect のアンインストール
<a name="ec2-instance-connect-uninstall"></a>

EC2 Instance Connect を無効にするには、Linux インスタンスに接続し、Linux にインストールされている `ec2-instance-connect` パッケージをアンインストールします。`sshd` 設定が EC2 Instance Connect をインストールしたときのまま変更されていない場合、`ec2-instance-connect` をアンインストールすると、`sshd` 設定も削除されます。`sshd` 設定が EC2 Instance Connect のインストール後に変更されている場合は、それを手動で更新する必要があります。

------
#### [ Amazon Linux ]

EC2 Instance Connect が事前設定されている AL2023 および Amazon Linux 2 2.0.20190618 以降では EC2 Instance Connect をアンインストールできます。

**Amazon Linux を使用して起動したインスタンスから EC2 Instance Connect をアンインストールするには**

1. SSH を使用してインスタンスに接続します。インスタンスの起動時に使用した SSH キーペアと AL2023 または Amazon Linux 2 AMI のデフォルトのユーザー名 `ec2-user`を指定します。

   例えば、次の **ssh** コマンドは、キーペア `ec2-a-b-c-d.us-west-2.compute.amazonaws.com` を使用して、パブリック DNS 名 `my_ec2_private_key.pem` でインスタンスに接続します。

   ```
   $ ssh -i my_ec2_private_key.pem ec2-user@ec2-a-b-c-d.us-west-2.compute.amazonaws.com
   ```

1. **yum** コマンドを使用して `ec2-instance-connect` パッケージをアンインストールします。

   ```
   [ec2-user ~]$ sudo yum remove ec2-instance-connect
   ```

------
#### [ Ubuntu ]

**Ubuntu AMI を使用して起動したインスタンスから EC2 Instance Connect をアンインストールするには**

1. SSH を使用してインスタンスに接続します。インスタンスの起動時に使用した SSH キーペアと、Ubuntu AMI のデフォルトのユーザー名 `ubuntu`を指定します。

   例えば、次の **ssh** コマンドは、キーペア `ec2-a-b-c-d.us-west-2.compute.amazonaws.com` を使用して、パブリック DNS 名 `my_ec2_private_key.pem` でインスタンスに接続します。

   ```
   $ ssh -i my_ec2_private_key.pem ubuntu@ec2-a-b-c-d.us-west-2.compute.amazonaws.com
   ```

1. **apt-get** コマンドを使用して `ec2-instance-connect` パッケージをアンインストールします。

   ```
   ubuntu:~$ sudo apt-get remove ec2-instance-connect
   ```

------

# プライベート IP アドレスと EC2 Instance Connect Endpoint を使用した、インスタンスへの接続
<a name="connect-with-ec2-instance-connect-endpoint"></a>

EC2 Instance Connect エンドポイントを使用すると、踏み台ホストを使用したり、仮想プライベートクラウド (VPC) がインターネットに直接接続したりする必要がなく、インターネットからインスタンスに安全に接続できます。

**利点**
+ インスタンスにパブリック IPv4 または IPv6 アドレスがなくても、インスタンスに接続できます。AWS は、実行中のインスタンスに関連付けられたパブリック IPv4 アドレスや Elastic IP アドレスを含む、すべてのパブリック IPv4 アドレスに対して料金を請求します。詳細については、「[Amazon VPC の料金](https://aws.amazon.com/vpc/pricing/)」ページの「**パブリック IPv4 アドレス**」タブを参照してください。
+ VPC に[インターネットゲートウェイ](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html)経由の直接インターネット接続を必須としなくても、インターネットからインスタンスに接続できます。
+ [IAM ポリシーとアクセス許可](permissions-for-ec2-instance-connect-endpoint.md)を使用して、インスタンスに接続する EC2 Instance Connect エンドポイント の作成と使用へのアクセスを制御できます。
+ インスタンスへの接続を試みると、成功または失敗を問わず、すべて [CloudTrail](log-ec2-instance-connect-endpoint-using-cloudtrail.md) にログが作成されます。

**料金**  
EC2 Instance Connect エンドポイントの使用に追加コストはかかりません。EC2 Instance Connect エンドポイント を使用して、別のアベイラビリティーゾーンにあるインスタンスに接続する場合、アベイラビリティーゾーン間の[データ転送に追加料金](https://aws.amazon.com/ec2/pricing/on-demand/#Data_Transfer_within_the_same_AWS_Region)がかかります。

**Topics**
+ [仕組み](#how-eice-works)
+ [考慮事項](#ec2-instance-connect-endpoint-prerequisites)
+ [アクセス許可](permissions-for-ec2-instance-connect-endpoint.md)
+ [セキュリティグループ](eice-security-groups.md)
+ [EC2 Instance Connect エンドポイントの作成](create-ec2-instance-connect-endpoints.md)
+ [EC2 Instance Connect エンドポイントを変更する](modify-ec2-instance-connect-endpoint.md)
+ [EC2 Instance Connect エンドポイントを削除する](delete-ec2-instance-connect-endpoint.md)
+ [インスタンスへの接続](connect-using-eice.md)
+ [接続のログの作成](log-ec2-instance-connect-endpoint-using-cloudtrail.md)
+ [サービスにリンクされたロール](eice-slr.md)
+ [クォータ](eice-quotas.md)

## 仕組み
<a name="how-eice-works"></a>

EC2 Instance Connect エンドポイントは ID を認識する TCP プロキシです。EC2 Instance Connect エンドポイントサービスは、IAM エンティティの認証情報を使用して、コンピュータからエンドポイントへのプライベートトンネルを確立します。トラフィックは VPC に到達する前に認証され、承認されます。

[追加のセキュリティグループルールを設定](eice-security-groups.md)すると、インスタンスへのインバウンドトラフィックを制限できます。例えば、インスタンスのインバウンドルールを使用して、EC2 Instance Connect エンドポイントのみから管理ポートへのトラフィックを許可できます。

ルートテーブルルールを設定すると、エンドポイントが VPC の任意のサブネットの任意のインスタンスに接続できるようにすることができます。

次の図は、ユーザーが EC2 Instance Connect エンドポイントを使用してインターネットからインスタンスに接続する方法を示しています。まず、サブネット A に **[EC2 Instance Connect エンドポイント]**を作成します。サブネット内のエンドポイント用のネットワークインターフェイスを作成します。これは VPC 内のインスタンス宛のトラフィックのエントリポイントとして機能します。サブネット B のルートテーブルがサブネット A からのトラフィックを許可している場合、エンドポイントを使用してサブネット B のインスタンスに到達できます。

![\[EC2 Instance Connect エンドポイントフローの概要。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/ec2-instance-connect-endpoint.png)


## 考慮事項
<a name="ec2-instance-connect-endpoint-prerequisites"></a>

開始する前に、以下を考慮してください。
+ EC2 Instance Connect エンドポイントは、特に管理トラフィックのユースケースを対象としており、大量のデータ転送を想定していません。大量のデータ転送はスロットリングされます。
+ EC2 Instance Connect エンドポイントを作成すると、プライベート IPv4 アドレスまたは IPv6 アドレスを持つインスタンスへのトラフィックをサポートできます。エンドポイントの IP アドレスタイプは、インスタンスの IP アドレスと一致する必要があります。すべての IP アドレスタイプをサポートするエンドポイントを作成できます。
+ (Linux インスタンス) 独自のキーペアを使用すると、任意の Linux AMI を使用できます。その他の場合、インスタンスには EC2 Instance Connect がインストールされている必要があります。どの AMI に EC2 Instance Connect が含まれているか、およびサポートされている他の AMI にインストールする方法については、[EC2 Instance Connect のインストール](ec2-instance-connect-set-up.md) を参照してください。
+ セキュリティグループを EC2 Instance Connect エンドポイントに割り当てることができます。それ以外の場合は、VPC のデフォルトのセキュリティグループを使用します。EC2 Instance Connect エンドポイントのセキュリティグループは、宛先インスタンスへのアウトバウンドトラフィックを許可する必要があります。詳細については、「[EC2 Instance Connect エンドポイントのセキュリティグループ](eice-security-groups.md)」を参照してください。
+ EC2 Instance Connect エンドポイント を設定し、リクエストをインスタンスにルーティングするときに、クライアントのソース IP アドレスを保持することができます。それ以外の場合、ネットワークインターフェイスの IP アドレスは、すべての受信トラフィックのクライアント IP になります。
  + クライアント IP 保存を有効にする場合、インスタンスのセキュリティグループはクライアントからのトラフィックを許可する必要があります。また、インスタンスは EC2 Instance Connect エンドポイント と同じ VPC にある必要があります。
  + クライアント IP 保存を無効にする場合、インスタンスのセキュリティグループは VPC からのトラフィックを許可する必要があります。これがデフォルトです。
  + クライアント IP 保存は、IPv4 EC2 Instance Connect エンドポイントでのみサポートされています。クライアント IP 保存を使用するには、EC2 Instance Connect エンドポイントの IP アドレスタイプが IPv4 である必要があります。IP アドレスタイプがデュアルスタックまたは IPv6 の場合、クライアント IP 保存はサポートされません。
  + インスタンスタイプが C1、CG1、CG2、G1、HI1、M1、M2、M3、T1 である場合、クライアント IP 保存をサポートしません。クライアント IP の保存を有効にし、EC2 Instance Connect エンドポイントを使用してこれらのインスタンスタイプのいずれかのインスタンスに接続しようとすると、接続は失敗します。
  + トラフィックがトランジットゲートウェイを経由してルーティングされる場合、クライアント IP の保存はサポートされません。
+ EC2 Instance Connectエンドポイント を作成した場合、AWS Identity and Access Management (IAM) の Amazon EC2 サービスに対して、サービスにリンクされたロールが自動的に作成されます。Amazon EC2 は、サービスにリンクされたロールを使用してアカウントインターフェイスをプロビジョニングします。これは、EC2 Instance Connect エンドポイントを作成するときに必要です。詳細については、「[EC2 Instance Connect エンドポイントのサービスにリンクされたロール](eice-slr.md)」を参照してください。
+ EC2 Instance Connect エンドポイントを VPC およびサブネットごとに 1 つだけ作成できます。詳細については、「[EC2 Instance Connect エンドポイントのクォータ](eice-quotas.md)」を参照してください。別の EC2 Instance Connect エンドポイントを同じ VPC 内の別のアベイラビリティーゾーンに作成する必要がある場合は、まず既存の EC2 Instance Connect エンドポイントを削除する必要があります。そうしないと、クォータエラーが発生します。
+ 各 EC2 インスタンス接続エンドポイントは、最大 20 の同時接続をサポートできます。
+ 確立された TCP 接続の最大持続時間: 1 時間 (3,600 秒)。IAM ポリシーでは最大許容時間を最大 3,600 秒で指定できます。詳細については、「[ユーザーに EC2 Instance Connect エンドポイントを使用してインスタンスへ接続するためのアクセス許可](permissions-for-ec2-instance-connect-endpoint.md#iam-OpenTunnel)」を参照してください。

  接続の期間は、IAM 認証情報の期間によって決定されません。IAM 認証情報の有効期限が切れても、指定した最大期間に達するまで接続は維持されます。EC2 Instance Connect エンドポイントのコンソール機能を使用してインスタンスに接続する場合は、**[最大トンネル期間 (秒)]** を IAM 認証情報の期間より短い値に設定します。IAM 認証情報が早期に期限切れになった場合は、ブラウザページを閉じてインスタンスへの接続を終了します。

# EC2 Instance Connect エンドポイント を使用するためのアクセス許可の付与
<a name="permissions-for-ec2-instance-connect-endpoint"></a>

デフォルトでは、IAM エンティティには EC2 Instance Connect エンドポイントを作成、記述、変更するためのアクセス許可はありません。IAM 管理者は、必要なリソースに対して特定のアクションを実行するために必要な IAM ポリシーを作成できます。

IAM ポリシーの作成について詳しくは、「*IAM ユーザーガイド*」の「[IAM ポリシーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)」を参照してください。

以下のポリシー例では、EC2 Instance Connect エンドポイントへのアクセス許可を制御する方法を紹介します。

**Topics**
+ [EC2 Instance Connect エンドポイントを作成、記述、削除するアクセス許可](#iam-CreateInstanceConnectEndpoint)
+ [ユーザーに EC2 Instance Connect エンドポイントを使用してインスタンスへ接続するためのアクセス許可](#iam-OpenTunnel)
+ [特定の IP アドレス範囲からのみ接続できるアクセス許可](#iam-sourceip)

## EC2 Instance Connect エンドポイントを作成、記述、削除するアクセス許可
<a name="iam-CreateInstanceConnectEndpoint"></a>

EC2 Instance Connect エンドポイントを作成して変更するには、ユーザーには次のアクションのアクセス許可が必要です。
+ `ec2:CreateInstanceConnectEndpoint`
+ `ec2:CreateNetworkInterface`
+ `ec2:CreateTags`
+ `ec2:ModifyInstanceConnectEndpoint`
+ `iam:CreateServiceLinkedRole`

EC2 Instance Connect エンドポイントを記述して削除するには、ユーザーに次のアクションに対するアクセス許可が必要です。
+ `ec2:DescribeInstanceConnectEndpoints` 
+ `ec2:DeleteInstanceConnectEndpoint`

すべてのサブネットで EC2 Instance Connect エンドポイントを作成、記述、削除するアクセス許可を付与するポリシーを作成できます。または、サブネット ARN を許可済みの `Resource` として指定するか、`ec2:SubnetID` 条件キーを使用して、指定したサブネットのアクションのみを制限することもできます。`aws:ResourceTag` 条件キーを使用して、特定のタグによるエンドポイントの作成を明示的に許可または拒否することもできます。詳細については、「* IAM ユーザーガイド*」の「[IAM のポリシーとアクセス許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)」を参照してください。

**IAM ポリシーの例**

次の IAM ポリシーの例では、`Resource` セクションはアスタリスク (`*`) で指定されたすべてのサブネットでエンドポイントを作成、変更、削除するアクセス許可が付与されます。`ec2:Describe*` API アクションは、リソースレベルのアクセス許可をサポートしていません。したがって、`Resource` の要素には、`*` (ワイルドカード) が必要です。

## ユーザーに EC2 Instance Connect エンドポイントを使用してインスタンスへ接続するためのアクセス許可
<a name="iam-OpenTunnel"></a>

`ec2-instance-connect:OpenTunnel` アクションは、EC2 Instance Connect エンドポイントを介して接続するインスタンスへの TCP 接続を確立するためのアクセス許可を付与します。使用する EC2 Instance Connect エンドポイントを指定できます。または、アスタリスク (`*`) が付いている `Resource` を使用すると、ユーザーは利用可能な任意の EC2 Instance Connect エンドポイントを使用できます。条件キーとしてのリソースタグの有無に基づいて、インスタンスへのアクセスを制限することもできます。

**条件**
+ `ec2-instance-connect:remotePort` — TCP 接続の確立に使用できるインスタンスのポート。この条件キーを使用した場合、ポリシーで指定されているポート以外のポート上のインスタンスに接続しようとすると失敗します。
+ `ec2-instance-connect:privateIpAddress` — TCP 接続を確立するインスタンスに関連する宛先プライベート IP アドレス。例えば、1 つの IP アドレス (`10.0.0.1/32` など) を指定することも、CIDR を介して IP 範囲 (`10.0.1.0/28` など) を指定することもできます。この条件キーを使用した場合、別のプライベート IP アドレスまたは CIDR 範囲外のインスタンスに接続しようとすると失敗します。
+ `ec2-instance-connect:maxTunnelDuration` — 確立された TCP 接続の最大期間。単位は秒で、期間の範囲は最小 1 秒から最大 3,600 秒 (1 時間) です。条件が指定されていない場合、デフォルトの時間は 3,600 秒 (1 時間) に設定されます。IAM ポリシーで指定された期間よりも長く、またはデフォルトの最大期間よりも長くインスタンスに接続しようとすると、失敗します。指定した期間が経過すると、接続は切断されます。

  `maxTunnelDuration` は IAM ポリシーで指定されていて、指定した値が 3,600 秒 (デフォルト) 未満の場合は、インスタンスに接続するときにコマンドで `--max-tunnel-duration` を指定する必要があります。インスタンスへの接続方法については、「[EC2 Instance Connect エンドポイントを使用して Amazon EC2 インスタンスに接続する](connect-using-eice.md)」を参照ください。　　　

ユーザーには、EC2 Instance Connect エンドポイントに対するリソースタグの有無に基づいて、インスタンスへの接続を確立するためのアクセス許可を付与することもできます。詳細については、「* IAM ユーザーガイド*」の「[IAM のポリシーとアクセス許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)」を参照してください。

Linux インスタンスでは、`ec2-instance-connect:SendSSHPublicKey` アクションでパブリックキーをインスタンスにプッシュするアクセス許可が付与されます。`ec2:osuser` 条件は、パブリックキーをインスタンスにプッシュできる OS (オペレーティングシステム) ユーザーの名前を指定します。インスタンスの起動に使用した [AMI のデフォルトのユーザー名](connection-prereqs-general.md#connection-prereqs-get-info-about-instance)を使用します。詳細については、「[IAM への EC2 Instance Connect のアクセス許可の付与](ec2-instance-connect-configure-IAM-role.md)」を参照してください。

**IAM ポリシーの例**

次の IAM ポリシーの例では、IAM プリンシパルは、指定されたエンドポイント ID `eice-123456789abcdef` で識別される指定された EC2 Instance Connect エンドポイントのみを使用してインスタンスに接続できます。接続は、すべての条件が満たされた場合にのみ正常に確立されます。

**注記**  
`ec2:Describe*` API アクションは、リソースレベルのアクセス許可をサポートしていません。したがって、`Resource` の要素には、`*` (ワイルドカード) が必要です。

------
#### [ Linux ]

この例では、インスタンスへの接続がポート 22 (SSH) で確立されているかどうか、インスタンスのプライベート IP アドレスが `10.0.1.0/31` (`10.0.1.0`～`10.0.1.1`) の範囲内であるかどうか、および `maxTunnelDuration` が `3600` 秒以下であるかどうかが評価されます。`3600` 秒(1 時間) 後 に接続が切断されます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "EC2InstanceConnect",
            "Action": "ec2-instance-connect:OpenTunnel",
            "Effect": "Allow",
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance-connect-endpoint/eice-123456789abcdef",
            "Condition": {
                "NumericEquals": {
                    "ec2-instance-connect:remotePort": "22"
                },
                "IpAddress": {
                    "ec2-instance-connect:privateIpAddress": "10.0.1.0/31"
                },
                "NumericLessThanEquals": {
                    "ec2-instance-connect:maxTunnelDuration": "3600"
                }
            }
        },
        {
            "Sid": "SSHPublicKey",
            "Effect": "Allow",
            "Action": "ec2-instance-connect:SendSSHPublicKey",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ec2:osuser": "ami-username"
                }
            }
        },
        {
            "Sid": "Describe",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceConnectEndpoints"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

------

------
#### [ Windows ]

この例では、インスタンスへの接続がポート 3389 (RDP) で確立されているかどうか、インスタンスのプライベート IP アドレスが `10.0.1.0/31` (`10.0.1.0`～`10.0.1.1`) の範囲内であるかどうか、および `maxTunnelDuration` が `3600` 秒以下であるかどうかが評価されます。`3600` 秒(1 時間) 後 に接続が切断されます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "EC2InstanceConnect",
            "Action": "ec2-instance-connect:OpenTunnel",
            "Effect": "Allow",
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance-connect-endpoint/eice-123456789abcdef",
            "Condition": {
                "NumericEquals": {
                    "ec2-instance-connect:remotePort": "3389"
                },
                "IpAddress": {
                    "ec2-instance-connect:privateIpAddress": "10.0.1.0/31"
                },
                "NumericLessThanEquals": {
                    "ec2-instance-connect:maxTunnelDuration": "3600"
                }
            }
        },
        {
            "Sid": "Describe",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceConnectEndpoints"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

------

------

## 特定の IP アドレス範囲からのみ接続できるアクセス許可
<a name="iam-sourceip"></a>

次の IAM ポリシーの例では、ポリシーで指定された IP アドレス範囲内の IP アドレスから接続することを条件に、IAM プリンシパルがインスタンスに接続することを許可しています。IAM プリンシパルが `192.0.2.0/24` (このポリシーの IP アドレス範囲の例) 内ではない IP アドレスから `OpenTunnel` の呼び出しを行った場合、応答は `Access Denied` になります。詳細については、「[IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip)」の「*`aws:SourceIp`*」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "ec2-instance-connect:OpenTunnel",
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance-connect-endpoint/eice-123456789abcdef",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "192.0.2.0/24"
                },
                "NumericEquals": {
                    "ec2-instance-connect:remotePort": "22"
                }
            }
        },
        {
            "Sid": "SSHPublicKey",
            "Effect": "Allow",
            "Action": "ec2-instance-connect:SendSSHPublicKey",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ec2:osuser": "ami-username"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceConnectEndpoints"
            ],
            "Resource": "*"
        }
    ]
}
```

------

# EC2 Instance Connect エンドポイントのセキュリティグループ
<a name="eice-security-groups"></a>

セキュリティグループは、関連付けられたリソースに到達できるトラフィックおよびリソースから発信できるトラフィックを制御します。例えば、Amazon EC2 インスタンスに出入りするトラフィックは、そのインスタンスに関連付けられているセキュリティグループによって特に許可されていない限り、拒否する場合を考えます。

次の例は、EC2 Instance Connect エンドポイントとターゲットインスタンスのセキュリティグループルールを設定する方法を示しています。

**Topics**
+ [EC2 Instance Connect エンドポイント セキュリティグループルール](#eice-security-group-rules)
+ [ターゲットインスタンスセキュリティグループのルール](#resource-security-group-rules)

## EC2 Instance Connect エンドポイント セキュリティグループルール
<a name="eice-security-group-rules"></a>

EC2 Instance Connect エンドポイントのセキュリティグループは、エンドポイントから出る対象のインスタンスに対する、アウトバウンドトラフィックを許可する必要があります。送信先として、インスタンスセキュリティグループ、または VPC の IPv4 または IPv6 アドレス範囲のいずれかを指定できます。

エンドポイントへのトラフィックは EC2 Instance Connect エンドポイントサービスから送信され、エンドポイントセキュリティグループのインバウンドルールに関係なく許可されます。EC2 Instance Connect エンドポイント を使用してインスタンスに接続できるユーザーを制御するには、IAM ポリシーを使用します。詳細については、「[ユーザーに EC2 Instance Connect エンドポイントを使用してインスタンスへ接続するためのアクセス許可](permissions-for-ec2-instance-connect-endpoint.md#iam-OpenTunnel)」を参照してください。

**アウトバウンドルールの例: セキュリティグループ参照**  
次の例では、セキュリティグループ参照を使用しています。つまり、宛先はターゲットインスタンスに関連付けられたセキュリティグループです。このルールにより、エンドポイントからこのセキュリティグループを使用するすべてのインスタンスへのアウトバウンドトラフィックが許可されます。


| プロトコル | 目的地 | ポート範囲 | コメント | 
| --- | --- | --- | --- | 
| TCP | インスタンスのセキュリティグループの ID | 22 | インスタンスセキュリティグループに関連付けられているすべてのインスタンスへのアウトバウンド SSH トラフィックを許可します。 | 

**アウトバウンドルールの例: IPv4 アドレス範囲**  
次の例では、指定した IPv4 アドレス範囲へのアウトバウンドトラフィックを許可します。インスタンスの IPv4 アドレスはサブネットから割り当てられるため、VPC の IPv4 アドレス範囲を使用できます。


| プロトコル | 目的地 | ポート範囲 | コメント | 
| --- | --- | --- | --- | 
| TCP | VPC IPv4 CIDR | 22 | VPC へのアウトバウンド SSH トラフィックを許可します | 

**アウトバウンドルールの例: IPv6 アドレス範囲**  
次の例では、指定した IPv6 アドレス範囲へのアウトバウンドトラフィックを許可します。インスタンスの IPv6 アドレスはサブネットから割り当てられるため、VPC の IPv6 アドレス範囲を使用できます。


| プロトコル | 目的地 | ポート範囲 | コメント | 
| --- | --- | --- | --- | 
| TCP | VPC IPv6 CIDR | 22 | VPC へのアウトバウンド SSH トラフィックを許可します | 

## ターゲットインスタンスセキュリティグループのルール
<a name="resource-security-group-rules"></a>

ターゲットインスタンスのセキュリティグループルールで、EC2 Instance Connect エンドポイントからのインバウンドトラフィックを許可する必要があります。ソースとして、エンドポイントセキュリティグループ、または IPv4 または IPv6 アドレス範囲のいずれかを指定できます。IPv4 アドレス範囲を指定する場合、送信元はクライアント IP の保存がオフかオンかによって異なります。詳細については、「[考慮事項](connect-with-ec2-instance-connect-endpoint.md#ec2-instance-connect-endpoint-prerequisites)」を参照してください。

セキュリティグループはステートフルであるため、インスタンスのセキュリティグループのアウトバウンドルールに関係なく、レスポンストラフィックは VPC から出ることができます。

**インバウンドルールの例: セキュリティグループ参照**  
次の例では、セキュリティグループ参照を使用しています。つまり、ソースはエンドポイントに関連付けられたセキュリティグループです。このルールは、クライアント IP 保護がオンかオフかに関係なく、エンドポイントからこのセキュリティグループを使用するすべてのインスタンスへのインバウンド SSH トラフィックを許可します。SSH 用のインバウンドセキュリティグループルールが他にない場合、インスタンスはエンドポイントからの SSH トラフィックのみを受け入れます。


| プロトコル | ソース | ポート範囲 | コメント | 
| --- | --- | --- | --- | 
| TCP | エンドポイントセキュリティグループの ID | 22 | エンドポイントセキュリティグループに関連付けられているリソースからのインバウンド SSH トラフィックを許可します | 

**インバウンドルールの例: クライアント IP 保護オフ**  
次の例では、指定した IPv4 アドレス範囲からのインバウンド SSH トラフィックを許可します。クライアント IP 保存が無効であるため、ソース IPv4 アドレスはエンドポイントのネットワークインターフェイスのアドレスになります。エンドポイントのネットワークインターフェイスのアドレスはサブネットから割り当てられるため、VPC の IPv4 アドレス範囲を使用して VPC 内のすべてのインスタンスへの接続を許可できます。


| プロトコル | ソース | ポート範囲 | コメント | 
| --- | --- | --- | --- | 
| TCP | VPC IPv4 CIDR | 22 | VPC からのインバウンド SSH トラフィックを許可する | 

**インバウンドルールの例: クライアント IP 保護オン**  
次の例では、指定した IPv4 アドレス範囲からのインバウンド SSH トラフィックを許可します。クライアント IP 保存が有効であるため、ソース IPv4 アドレスはクライアントのアドレスになります。


| プロトコル | ソース | ポート範囲 | コメント | 
| --- | --- | --- | --- | 
| TCP | パブリック IPv4 アドレス範囲 | 22 | 指定したクライアント IPv4 アドレス範囲からのインバウンドトラフィックを許可します | 

# EC2 Instance Connect エンドポイントの作成
<a name="create-ec2-instance-connect-endpoints"></a>

EC2 Instance Connect エンドポイントを作成して、インスタンスに安全に接続できるようにします。

**考慮事項**
+ **共有サブネット** – EC2 Instance Connect エンドポイントを、共有しているサブネットに作成できます。ただし、VPC 所有者が、共有しているサブネットに作成した EC2 Instance Connect エンドポイントを使用することはできません。
+ **IP アドレスタイプ** – EC2 Instance Connect エンドポイントは、次のアドレスタイプをサポートしますが、これらはサブネットと互換性がある必要があります。
  + `ipv4` – プライベート IPv4 アドレスを持つ EC2 インスタンスにのみ接続します。
  + `dualstack` – プライベート IPv4 アドレスまたは IPv6 アドレスを使用して EC2 インスタンスに接続します。
  + `ipv6` – IPv6 アドレスを持つ EC2 インスタンスにのみ接続します。

**前提条件**  
EC2 Instance Connect エンドポイントを作成するには、必要な IAM アクセス許可が付与されている必要があります。詳細については、「[EC2 Instance Connect エンドポイントを作成、記述、削除するアクセス許可](permissions-for-ec2-instance-connect-endpoint.md#iam-CreateInstanceConnectEndpoint)」を参照してください。

------
#### [ Console ]

**EC2 Instance Connect エンドポイントを作成するには**

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

1. 左のナビゲーションペインで [**エンドポイント**] を選択してください。

1. **[エンドポイントの作成]** を選択し、次のようにエンドポイント設定を指定します。

   1. (オプション) **[名前タグ]** にエンドポイントの名前を入力してください。

   1. **[タイプ]** に **[EC2 Instance Connect エンドポイント]** を選択してください。

   1. **[VPC]** の **[ネットワーク設定]** で、ターゲットインスタンスが含まれている VPC を選択してください。

   1. (オプション) クライアント IP アドレスを保持するには、**[その他の設定]** を展開して **[クライアント IP の保持]** チェックボックスを選択してください。それ以外の場合、デフォルトではエンドポイントのネットワークインターフェースをクライアント IP アドレスとして使用します。
**注記**  
このオプションは、エンドポイントの IP アドレスタイプが IPv4 として設定されている場合にのみ使用できます。

   1. (オプション) **[セキュリティグループ]** で、エンドポイントに関連付けるセキュリティグループを選択してください。それ以外の場合は、デフォルトでは VPC のデフォルトセキュリティグループを使用します。詳細については、「[EC2 Instance Connect エンドポイントのセキュリティグループ](eice-security-groups.md)」を参照してください。

   1. **[サブネット]** で、エンドポイントを作成するサブネットを選択してください。

   1. **[IP アドレスタイプ]** で、エンドポイントの IP アドレスタイプを選択します。インスタンスへの IPv4 と IPv6 の両方の接続をサポートする必要がある場合は、**[デュアルスタック]** を選択します。クライアント IP 保存をサポートする必要がある場合は、**[IPv4]** を選択します。

   1. (オプション) タグを追加するには、[**新しいタグを追加**] を選択し、そのタグのキーと値を入力してください。

1. 設定を確認したら、**[プロジェクトの作成]** を選択してください。

   エンドポイントの初期状態は **[保留中]** です。このエンドポイントを使用してインスタンスに接続する前に、ステータスが **[使用可能]** になるまで待つ必要があります。これは数分かかることがあります。

1. エンドポイントを使用してインスタンスに接続するには、[インスタンスへの接続](connect-using-eice.md) を参照してください。

------
#### [ AWS CLI ]

**EC2 Instance Connect エンドポイントを作成するには**  
[https://docs.aws.amazon.com/cli/latest/reference/ec2/create-instance-connect-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-instance-connect-endpoint.html) コマンドを使用します。

```
aws ec2 create-instance-connect-endpoint \
    --subnet-id subnet-0123456789example
```

エンドポイントがサポートするトラフィックのタイプを指定するには、`--ip-address-type` パラメータを含めます。有効な値は `ipv4`、`dualstack`、または `ipv6` です。サブネットは、指定した IP アドレスタイプをサポートしている必要があります。`--ip-address-type` パラメータを省略した場合、デフォルト値はサブネットでサポートされている IP アドレスタイプによって決まります。

```
aws ec2 create-instance-connect-endpoint \
    --subnet-id subnet-0123456789example \
    --ip-address-type ipv4
```

以下は出力の例です。

```
{
        "OwnerId": "111111111111",
        "InstanceConnectEndpointId": "eice-0123456789example",
        "InstanceConnectEndpointArn": "arn:aws:ec2:us-east-1:111111111111:instance-connect-endpoint/eice-0123456789example",
        "State": "create-complete",
        "StateMessage": "",
        "DnsName": "eice-0123456789example.0123abcd.ec2-instance-connect-endpoint.us-east-1.amazonaws.com",
        "FipsDnsName": "eice-0123456789example.0123abcd.fips.ec2-instance-connect-endpoint.us-east-1.amazonaws.com",
        "NetworkInterfaceIds": [
            "eni-0123abcd"
        ],
        "VpcId": "vpc-0123abcd",
        "AvailabilityZone": "us-east-1a",
        "AvailabilityZoneId": "use1-az4",
        "CreatedAt": "2023-04-07T15:43:53.000Z",
        "SubnetId": "subnet-0123abcd",
        "PreserveClientIp": false,
        "SecurityGroupIds": [
            "sg-0123abcd"
        ],
        "Tags": [],
        "IpAddressType": "ipv4"
}
```

**作成ステータスをモニタリングするには**  
`State` フィールドの初期値は `create-in-progress` です。このエンドポイントを使用してインスタンスに接続するには、状態が `create-complete` になるまで待ってください。[https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-connect-endpoints.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-connect-endpoints.html) コマンドを使用して EC2 Instance Connect エンドポイントのステータスを監視します。`--query` パラメータは、`State` フィールドに結果をフィルタリングします。

```
aws ec2 describe-instance-connect-endpoints --instance-connect-endpoint-ids eice-0123456789example --query InstanceConnectEndpoints[*].State --output text
```

以下は出力の例です。

```
create-complete
```

------
#### [ PowerShell ]

**EC2 Instance Connect エンドポイントを作成する方法**  
[https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2InstanceConnectEndpoint.html](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2InstanceConnectEndpoint.html) コマンドレットを使用します。

```
New-EC2InstanceConnectEndpoint -SubnetId subnet-0123456789example
```

エンドポイントがサポートするトラフィックのタイプを指定するには、`-IpAddressType` パラメータを含めます。有効な値は `ipv4`、`dualstack`、または `ipv6` です。サブネットは、指定した IP アドレスタイプをサポートしている必要があります。`-IpAddressType` パラメータを省略した場合、デフォルト値はサブネットでサポートされている IP アドレスタイプによって決まります。

```
New-EC2InstanceConnectEndpoint -SubnetId subnet-0123456789example -IpAddressType ipv4
```

以下は出力の例です。

```
OwnerId                     : 111111111111
InstanceConnectEndpointId   : eice-0123456789example
InstanceConnectEndpointArn  : arn:aws:ec2:us-east-1:111111111111:instance-connect-endpoint/eice-0123456789example
State                       : create-complete
StateMessage                : 
DnsName                     : eice-0123456789example.0123abcd.ec2-instance-connect-endpoint.us-east-1.amazonaws.com
FipsDnsName                 : eice-0123456789example.0123abcd.fips.ec2-instance-connect-endpoint.us-east-1.amazonaws.com
NetworkInterfaceIds         : {eni-0123abcd}
VpcId                       : vpc-0123abcd
AvailabilityZone            : us-east-1a
AvailabilityZoneId          : use1-az4
CreatedAt                   : 4/7/2023 3:43:53 PM
SubnetId                    : subnet-0123abcd
PreserveClientIp            : False
SecurityGroupIds            : {sg-0123abcd}
Tags                        : {}
IpAddressType               : ipv4
```

**作成ステータスをモニタリングするには**  
`State` フィールドの初期値は `create-in-progress` です。このエンドポイントを使用してインスタンスに接続するには、状態が `create-complete` になるまで待ってください。[https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceConnectEndpoint.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceConnectEndpoint.html) コマンドレットを使用して EC2 Instance Connect エンドポイントのステータスをモニタリングします。`.State.Value` は結果を `State` フィールドにフィルタリングします。

```
(Get-EC2InstanceConnectEndpoint -InstanceConnectEndpointId "eice-0123456789example").State.Value
```

以下は出力の例です。

```
create-complete
```

------

# EC2 Instance Connect エンドポイントを変更する
<a name="modify-ec2-instance-connect-endpoint"></a>

AWS CLI または SDK を使用して既存の EC2 Instance Connect エンドポイントを変更できます。Amazon EC2 コンソールでは、エンドポイントの変更がサポートされていません。

開始する前に、必須の IAM のアクセス許可が必要です。詳細については、「[EC2 Instance Connect エンドポイントを作成、記述、削除するアクセス許可](permissions-for-ec2-instance-connect-endpoint.md#iam-CreateInstanceConnectEndpoint)」を参照してください。

## 変更できるパラメータ
<a name="eice-modify-parameters"></a>

次の EC2 Instance Connect エンドポイントパラメータを変更できます。

**セキュリティグループ**  
EC2 Instance Connect エンドポイントに新しいセキュリティグループを指定できます。新しいセキュリティグループは現在のセキュリティグループを置き換えます。  
セキュリティグループを変更する際、以下の事項を指定する必要があります。  
+ VPC のデフォルトのセキュリティグループであっても、少なくとも 1 つのセキュリティグループ。
+ セキュリティグループの名前ではなく、ID。

**IP アドレスタイプ**  
EC2 Instance Connect エンドポイントに新しい IP アドレスタイプを指定できます。  
有効な値: `ipv4` \$1 `dualstack` \$1 `ipv6`

**クライアント IP 設定の保持**  
クライアント IP アドレスをソースとして保持するかどうかを指定できます。  
クライアント IP の保存は、IPv4 EC2 Instance Connect エンドポイントでのみサポートされています。`PreserveClientIp` を有効にする場合、エンドポイントの既存の IP アドレスタイプは `ipv4` である必要があります。または同じリクエストで IP アドレスタイプを変更する場合、新しい値は `ipv4` である必要があります。

------
#### [ AWS CLI ]

**EC2 Instance Connect エンドポイントを変更する方法**  
[https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-connect-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-connect-endpoint.html) コマンドを使用し、変更する EC2 Instance Connect エンドポイントおよびパラメータを指定します。次の の例では、1 つのリクエストですべてのパラメータを変更します。

```
aws ec2 modify-instance-connect-endpoint \
    --instance-connect-endpoint-id eice-0123456789example \
    --security-group-ids sg-0123456789example \
    --ip-address-type dualstack \
    --no-preserve-client-ip
```

以下は出力の例です。

```
{
    "Return": true
}
```

**更新ステータスをモニタリングする方法**  
変更中、EC2 Instance Connect エンドポイントのステータスは `update-in-progress` に変わります。更新プロセスは非同期的に実行され、`update-complete` または `update-failed` のステータスで完了します。エンドポイントは、ステータスが `update-complete` に変わるまで古い設定を使用します。

[https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-connect-endpoints.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-connect-endpoints.html) コマンドを使用して、更新ステータスをモニタリングします。`--query` パラメータは、`State` フィールドに結果をフィルタリングします。

```
aws ec2 describe-instance-connect-endpoints \
    --instance-connect-endpoint-ids eice-0123456789example \
    --query InstanceConnectEndpoints[*].State --output text
```

以下は出力の例です。

```
update-complete
```

------
#### [ PowerShell ]

**EC2 Instance Connect エンドポイントを変更する方法**  
[https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceConnectEndpoint.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceConnectEndpoint.html) コマンドレットを使用して、変更する EC2 Instance Connect エンドポイントおよびパラメータを指定します。次の の例では、1 つのリクエストですべてのパラメータを変更します。

```
Edit-EC2InstanceConnectEndpoint `
    -InstanceConnectEndpointId eice-0123456789example `
    -SecurityGroupIds sg-0123456789example `
    -IpAddressType dualstack `
    -PreserveClientIp $false
```

以下は出力の例です。

```
True
```

**更新ステータスをモニタリングする方法**  
変更中、EC2 Instance Connect エンドポイントのステータスは `update-in-progress` に変わります。更新プロセスは非同期的に実行され、`update-complete` または `update-failed` のステータスで完了します。エンドポイントは、ステータスが `update-complete` に変わるまで古い設定を使用します。

[https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceConnectEndpoint.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceConnectEndpoint.html) コマンドを使用して更新ステータスをモニタリングします。`.State.Value` は結果を `State` フィールドにフィルタリングします。

```
(Get-EC2InstanceConnectEndpoint -InstanceConnectEndpointId "eice-0123456789example").State.Value
```

以下は出力の例です。

```
update-complete
```

------

# EC2 Instance Connect エンドポイントを削除する
<a name="delete-ec2-instance-connect-endpoint"></a>

EC2 Instance Connect エンドポイントの使用が終わったら、削除することができます。

EC2 Instance Connect エンドポイントを作成するには、必要な IAM アクセス許可が付与されている必要があります。詳細については、「[EC2 Instance Connect エンドポイントを作成、記述、削除するアクセス許可](permissions-for-ec2-instance-connect-endpoint.md#iam-CreateInstanceConnectEndpoint)」を参照してください。

コンソールを使用して EC2 Instance Connect エンドポイントを削除すると、**[削除中]** 状態になります。削除が成功すると、削除されたエンドポイントは表示されなくなります。削除に失敗すると、**delete-failed** 状態になり、**[ステータスメッセージ]** が失敗の理由を表示します。

AWS CLI を使用して EC2 Instance Connect エンドポイントを削除すると、`delete-in-progress` 状態になります。削除が成功した場合、`delete-complete` 状態となります。削除に失敗すると、`delete-failed` 状態になり、`StateMessage` が失敗の理由を表示します。

------
#### [ Console ]

**EC2 Instance Connect エンドポイントを削除するには**

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

1. 左のナビゲーションペインで [**エンドポイント**] を選択してください。

1. エンドポイントを選択してください。

1. **[アクション** 、**[VPC エンドポイントを削除]** の順に選択してください。

1. 確認を求められたら、**delete** をクリックしてください。

1. [**削除**] を選択してください。

------
#### [ AWS CLI ]

**EC2 Instance Connect エンドポイントを削除するには**  
[https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-instance-connect-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-instance-connect-endpoint.html) コマンドを使用し、削除する EC2 Instance Connect エンドポイントの ID を指定します。

```
aws ec2 delete-instance-connect-endpoint --instance-connect-endpoint-id eice-03f5e49b83924bbc7
```

以下は出力の例です。

```
{
    "InstanceConnectEndpoint": {
        "OwnerId": "111111111111",
        "InstanceConnectEndpointId": "eice-0123456789example",
        "InstanceConnectEndpointArn": "arn:aws:ec2:us-east-1:111111111111:instance-connect-endpoint/eice-0123456789example",
        "State": "delete-in-progress",
        "StateMessage": "",
        "NetworkInterfaceIds": [],
        "VpcId": "vpc-0123abcd",
        "AvailabilityZone": "us-east-1d",
        "AvailabilityZoneId": "use1-az2",
        "CreatedAt": "2023-02-07T12:05:37+00:00",
        "SubnetId": "subnet-0123abcd"
    }
}
```

------
#### [ PowerShell ]

**EC2 Instance Connect エンドポイントを削除するには**  
[https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-instance-connect-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-instance-connect-endpoint.html) コマンドレットを使用し、削除する EC2 Instance Connect エンドポイントの ID を指定します。

```
Remove-EC2InstanceConnectEndpoint -InstanceConnectEndpointId eice-03f5e49b83924bbc7
```

以下は出力の例です。

```
@{
    InstanceConnectEndpoint = @{
        OwnerId = "111111111111"
        InstanceConnectEndpointId = "eice-0123456789example"
        InstanceConnectEndpointArn = "arn:aws:ec2:us-east-1:111111111111:instance-connect-endpoint/eice-0123456789example"
        State = "delete-in-progress"
        StateMessage = ""
        NetworkInterfaceIds = @()
        VpcId = "vpc-0123abcd"
        AvailabilityZone = "us-east-1d"
        AvailabilityZoneId = "use1-az2"
        CreatedAt = "2023-02-07T12:05:37+00:00"
        SubnetId = "subnet-0123abcd"
    }
}
```

------

# 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)」を参照してください。

# EC2 Instance Connect エンドポイントを介して確立された接続のログの作成
<a name="log-ec2-instance-connect-endpoint-using-cloudtrail"></a>

リソース操作のログを作成し、AWS CloudTrail ログを使用して EC2 Instance Connect エンドポイントを介して確立された接続を監査できます。

Amazon EC2 での AWS CloudTrail の使用に関する詳細は、「[AWS CloudTrail を使用して Amazon EC2 API コールをログに記録する](monitor-with-cloudtrail.md)」を参照してください。

## AWS CloudTrail を使用した EC2 Instance Connect Endpoint API コールのログの作成
<a name="ec2-instance-connect-endpoint-api-calls-cloudtrail"></a>

EC2 Instance Connect エンドポイントのリソース操作は、管理イベントとして CloudTrail にログが作成されます。次の API コールが行われると、アクティビティは CloudTrail イベントとして **[イベント履歴]** にログが作成されます。
+ `CreateInstanceConnectEndpoint`
+ `DescribeInstanceConnectEndpoints`
+ `DeleteInstanceConnectEndpoint`

最近のイベントは、AWS アカウント で表示、検索、ダウンロードできます。詳細については、「AWS CloudTrail ユーザーガイド 」の「[CloudTrail イベント履歴でのイベントの表示](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)」を参照してください。

## EC2 Instance Connect エンドポイントを使用してインスタンスに接続するユーザーを監査するための AWS CloudTrail の使用
<a name="ec2-instance-connect-endpoint-audit-users-cloudtrail"></a>

EC2 Instance Connect エンドポイントを経由してインスタンスに接続を試みると、CloudTrail の **[イベント履歴]** にログが作成されます。インスタンスへの接続が EC2 Instance Connect エンドポイントを経由して開始されると、その接続は `OpenTunnel` の `eventName` という CloudTrail 管理イベントとしてログが作成されます。

CloudTrail イベントをターゲットにルーティングする Amazon EventBridge ルールを作成できます。詳細については、「[Amazon EventBridge ユーザーガイド](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)」を参照してください。

CloudTrail にログが作成された `OpenTunnel` 管理イベントの例を以下に示します。

```
{
     "eventVersion": "1.08",
     "userIdentity": {
         "type": "IAMUser",
         "principalId": "ABCDEFGONGNOMOOCB6XYTQEXAMPLE",
         "arn": "arn:aws:iam::1234567890120:user/IAM-friendly-name",
         "accountId": "123456789012",
         "accessKeyId": "ABCDEFGUKZHNAW4OSN2AEXAMPLE",
         "userName": "IAM-friendly-name"
     },
     "eventTime": "2023-04-11T23:50:40Z",
     "eventSource": "ec2-instance-connect.amazonaws.com",
     "eventName": "OpenTunnel",
     "awsRegion": "us-east-1",
     "sourceIPAddress": "1.2.3.4",
     "userAgent": "aws-cli/1.15.61 Python/2.7.10 Darwin/16.7.0 botocore/1.10.60",
     "requestParameters": {
         "instanceConnectEndpointId": "eici-0123456789EXAMPLE",
         "maxTunnelDuration": "3600",
         "remotePort": "22",
         "privateIpAddress": "10.0.1.1"
     },
     "responseElements": null,
     "requestID": "98deb2c6-3b3a-437c-a680-03c4207b6650",
     "eventID": "bbba272c-8777-43ad-91f6-c4ab1c7f96fd",
     "readOnly": false,
     "resources": [{
         "accountId": "123456789012",
         "type": "AWS::EC2::InstanceConnectEndpoint",
         "ARN": "arn:aws:ec2:us-east-1:123456789012:instance-connect-endpoint/eici-0123456789EXAMPLE"
     }],
     "eventType": "AwsApiCall",
     "managementEvent": true,
     "recipientAccountId": "123456789012",
     "eventCategory": "Management"
}
```

# EC2 Instance Connect エンドポイントのサービスにリンクされたロール
<a name="eice-slr"></a>

Amazon EC2 は、AWS Identity and Access Management (IAM) [サービスにリンクされたロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-service-linked-role)を使用します。サービスにリンクされたロールは、Amazon EC2 に直接リンクされた一意のタイプの IAM ロールです。サービスにリンクされたロールは Amazon EC2 によって事前に定義されており、Amazon EC2 がユーザーに代わって他の AWS のサービスを呼び出すために必要なすべてのアクセス許可がロールには含まれています。詳細については「*IAM ユーザーガイド*」の「[Service-linked roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create-service-linked-role.html)」を参照してください。

## EC2 Instance Connect エンドポイントのサービスリンクロールアクセス許可
<a name="slr-permissions"></a>

Amazon EC2 は、**AWSServiceRoleForEC2InstanceConnect** を使用して、EC2 Instance Connect エンドポイントが必要とする、アカウント内のネットワークインターフェイスを作成し、管理します。

**AWSServiceRoleForEC2InstanceConnect** サービスにリンクされたロールは、以下のサービスを信頼してロールを引き受けます。
+ `ec2-instance-connect.amazonaws.com`

**AWSServiceRoleForEC2InstanceConnect** サービスリンクロールは、次の管理ポリシーを使用します。
+ **Ec2InstanceConnectEndpoint**

管理ポリシーのアクセス許可を確認するには、*AWS 管理されたポリシーリファレンス*の「[Ec2InstanceConnectEndpoint](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/Ec2InstanceConnectEndpoint.html)」を参照してください。

## EC2 Instance Connect エンドポイントのサービスリンクロールを作成する
<a name="create-slr"></a>

サービスにリンクされたこのロールを手動で作成する必要はありません。EC2 Instance Connect エンドポイントを作成する際、Amazon EC2 によってサービスリンクロールが作成されます。

## EC2 Instance Connect エンドポイントのサービスリンクロールの編集
<a name="edit-slr"></a>

EC2 Instance Connect エンドポイントでは、**AWSServiceRoleForEC2InstanceConnect** サービスにリンクされたロールを編集することはできません。

## EC2 Instance Connect エンドポイントのサービスリンクロールを削除する
<a name="delete-slr"></a>

EC2 Instance Connect エンドポイントを使用する必要がなくなった場合は、**AWSServiceRoleForEC2InstanceConnect** サービスにリンクされたロールを削除することをお勧めします。

サービスリンクロールを削除する前に、すべての EC2 Instance Connect エンドポイントのリソースを削除する必要があります。

サービスリンクロールの削除については*、IAM ユーザーガイドの*.[サービスリンクロールの削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html#id_roles_manage_delete-slr) を参照してください。

サービスリンク役割の作成、編集、削除を IAM エンティティ (ユーザー、グループ、役割) に許可するにはアクセス許可を設定する必要があります。詳細については*IAM ユーザーガイド* の「[サービスにリンクされた役割のアクセス許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create-service-linked-role.html#service-linked-role-permissions)」を参照してください。

# EC2 Instance Connect エンドポイントのクォータ
<a name="eice-quotas"></a>

AWS アカウント には、AWS のサービスごとにデフォルトのクォータ (以前は制限と呼ばれていました) があります。特に明記していない限り、クォータはリージョン固有です。

AWS アカウントには、EC2 Instance Connect エンドポイントに関連する、次のクォータがあります。


| 名前 | デフォルト | 引き上げ可能 | 
| --- | --- | --- | 
| AWS アカウント ごとの AWS リージョン あたりの EC2 Instance Connect エンドポイントの最大数 | 5 | いいえ | 
| VPC あたりの EC2 Instance Connect エンドポイントの最大数 | 1 | いいえ | 
| サブネットあたりの EC2 Instance Connect エンドポイントの最大数 | 1 | いいえ | 
| EC2 Instance Connect エンドポイントあたりの同時接続の最大数 | 20 | いいえ | 