初学者向け：キーペア（秘密鍵）不要なEC2 Instance Connectの特徴と実際に使ってみた感想

## はじめに
Amazon EC2を利用している方の中には、EC2インスタンスへのSSH接続に苦労した経験がある方も多いと思います。

:::note warn
***これまではキーペア（秘密鍵）を使って接続する方法が一般的でしたが、AWSが提供する「EC2 Instance Connect」を利用すれば、ブラウザやCLIから手軽にインスタンスに接続できます。***
:::

この記事では、自分自身の備忘録も兼ねて、EC2 Instance Connectの概要や使い方、メリットについてまとめていきます。

## EC2 Instance Connectとは？
EC2 Instance Connectは、AWSが提供するEC2インスタンスへの安全なSSH接続手段です。

:::note
**従来のSSH接続では秘密鍵（キーペア）が必要でしたが、Instance Connectでは一時的な公開鍵を利用してインスタンスに接続できます。**
:::

AWS Management ConsoleやAWS CLIを使って、簡単に一時的なSSHアクセスを実現できます。

## 私とEC2 Instance Connectの出会い
SSMセッションマネージャを触っていた際、秘密鍵（キーペア）を設定していないEC2インスタンスを放置してしまったことがありました。

:::note warn
***そのインスタンスの使い道を考え、「EC2 キーペア不要」で検索したところ、「EC2 Instance Connect」というサービスを発見しました！***
:::

普段はTera Termなどのソフトを使ってSSH接続することが多いのですが、興味が湧き、実際に試してみることにしました。

:::note
***詳しく知りたい方は、以下の記事も参考にしてみてください。***
:::

https://dev.classmethod.jp/articles/amazon-ec2-instance-connect-rhel-centos-macos/

https://qiita.com/zumax/items/717dd4ce9ff96d679e02

## EC2 Instance Connectの特徴

今回はEC2 Instance Connect エンドポイントではなく、インターネット経由でアクセスする「EC2 Instance Connect」に焦点を当てて解説します。

:::note
- **キーペアの管理が不要**
キーペアの紛失や漏洩リスクを軽減し、一時的な公開鍵で接続できます。

- **簡単なアクセス**
AWS Management ConsoleやCLIを使って、インスタンスへ直接SSH接続が可能です。
:::

### EC2 Instance Connect と EC2 Instance Connect エンドポイントの違い
まず、EC2 Instance ConnectとEC2 Instance Connect エンドポイントの違いを以下の表にまとめました。

| **項目**                     | **EC2 Instance Connect**             | **EC2 Instance Connect エンドポイント** |
|------------------------------|--------------------------------------|-----------------------------------------|
| **接続経路**                 | インターネット経由                   | VPC内のプライベート経路                |
| **ネットワーク要件**         | インターネット接続必須（ポート22）   | VPC内のプライベートエンドポイントのみ   |
| **セキュリティ**             | SSHポート（22）の開放が必要          | SSHポートをインターネットに開放不要      |
| **使用シナリオ**             | 一時的なSSHアクセスや鍵管理簡略化   | インターネットを経由せずにSSHアクセス   |
| **IAM権限**                 |    | 必要（`ec2-instance-connect`とVPC権限） |
| **インスタンスの公開IPアドレス** | 必須                                 | 不要                                     |

:::note
***今後、EC2 Instance Connect エンドポイントについても技術検証を行い、別の記事でまとめる予定です！***
::::

## 事前準備
ここでは、過去の記事で紹介したTerraformのコードを使い、シンプルなEC2インスタンスを1台構築して検証します。

https://qiita.com/free-honda/items/7770f57db0b9e619cfb4

:::note alert
***補足事項として、ここで構築しているEC2インスタンスはパブリックIPv4アドレスをもっており、秘密鍵（キーペア）は割り当ててない構成となっています。***
:::

## 実際にEC2 Instance Connectでインスタンスに接続してみた
AWS Management ConsoleからEC2ダッシュボードにアクセスします。

![スクリーンショット 2024-12-17 21.24.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/f921efe5-3d0a-75d8-605b-c6cfeb6329be.png)

対象のインスタンスを選択し、「**接続**」をクリックします。

![スクリーンショット 2024-12-17 21.24.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/2a0ce5c0-7b60-1a04-7d51-080ef5f8c047.png)

接続方法で「**EC2 Instance Connect**」を選び、「接続」ボタンを押すと、ブラウザ上でSSH接続が開始されます。

![スクリーンショット 2024-12-17 21.25.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/4d2437b9-607d-bd9b-8619-13e2960d7e2d.png)

ブラウザ上でSSH接続が開始され、EC2 Instance Connect専用のブラウザターミナルが起動します。

![スクリーンショット 2024-12-17 21.28.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/2d3a1755-9d2b-fc27-d248-b5ffc5f72fb0.png)

## まとめ
EC2 Instance Connectを使えば、従来のSSH接続よりも安全かつ手軽にAmazon EC2インスタンスへアクセスできます。

:::note warn
***特に、複数ユーザーが存在する環境や鍵管理を避けたい場合にめちゃくちゃ便利です！***
:::

AWS Management ConsoleやCLIを活用して、ぜひEC2 Instance Connectを試してみてください！***この記事が、技術的な支えになれば嬉しいです！***

## おまけ：EC2 Instance Connect と SSM セッションマネージャの違い

AWSのEC2 Instance ConnectとSSMセッションマネージャは、どちらもEC2インスタンスに接続する方法ですが、使い方や要件に違いがあります。

### 違いのまとめ

| **特徴**             | **EC2 Instance Connect**                | **SSM セッションマネージャ**                |
|-----------------------|----------------------------------------|-------------------------------------------|
| **接続プロトコル**    | SSH（ポート22）                        | SSM API経由（ポート不要）                  |
| **事前要件**         | SSH接続許可、IAM権限                   | SSM Agentのインストール、IAM権限           |
| **鍵管理**           | 一時的なSSH公開鍵                      | 鍵管理不要                                |
| **セキュリティ**     | ポート22の開放が必要                   | ポート不要。セキュアで安全                 |
| **ログ記録**         | なし                                   | SSMセッションログをCloudWatch等に記録可能  |
| **対応OS**           | Amazon Linux 2, Ubuntuなど             | Windows, Linux両対応                      |
| **用途**             | 手軽なSSH接続                          | セキュアな接続と高度な監査・管理           |

:::note warn
***SSHポートを開放したくない場合や、監査ログが必要な場合はSSMセッションマネージャがおすすめで、短時間のSSH接続や、鍵管理の手間を軽減したい場合はEC2 Instance Connectが便利です！***
:::

## 関連記事

SSMセッションマネージャについて詳しく知りたい方は、以下の記事も参考にしてみてください。

https://qiita.com/free-honda/items/9740ef602f072ab2b88c

https://qiita.com/free-honda/items/a2563c86c6d8eda89a96