

# 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)