はじめに
AWS EC2インスタンスに接続する際、一般的に使用される方法は、次の3つかと思います。
- SSH
- Session Manager
- EC2 Instance Connect (EIC)
本記事では各サービスについての内容とSession ManagerやEICを用いることで、SSHのPainPointを解決することを記載したいと思います。
1. SSH
構成図
SSH接続について簡単に紹介させていただきます。
SSHを利用するには、認証用のキーペア(公開鍵、秘密鍵)を用意する必要があります。
クライアントには秘密鍵を、サーバーには公開鍵を保持します。秘密鍵を使った認証を経て生成された対称鍵を用いてデータを暗号化し、安全に通信できます。
SSHはEC2インスタンスに限らず、サーバー接続時に広く利用される安全な接続方法ですが、次のような大小の不便が発生することがあります。
SSH使用時の課題
-
キーペア管理の必要性
ユーザーやリソースが増えると、管理しなければならない鍵の数が大幅に増えます。
1人1ユーザの使用が原則ですが、実務ではキーを共有して使用する問題が発生することがありますね。 -
ロギングシステムの構築と管理
SSH接続の記録を残すには別途ロギングシステムを構築、管理する負担があります。 -
動的IPおよびポート開放の問題
パブリックIPを使用する場合、セキュリティグループで一定の保護は可能ですが、動的IP環境では管理が難しくなるので、セキュリティリスクが増加します。 -
ローカルネットワークリソースへのアクセス不可
プライベートネットワークのリソースにアクセスするには、VPNの設定やBastion Hostの構築が必要となり、追加の管理やコストが発生します。
次のSession Managerを利用することで、この問題を解決することができます。
2. Session Manager
Session ManagerはAWS Systems Managerの機能の一つで、AWSコンソールやCLIを通じてEC2インスタンスに接続できるようにします。
構成図
Session Managerを使用すると、インスタンスのセキュリティグループでインバウンドポートを開放する必要がありません。
これは、EC2インスタンスにインストールされたSSM Agentが、常にSystems Managerにデータをポーリングして接続を維持しているためです。
そのため、インバウンドではなくアウトバウンドの接続だけを開けておけば大丈夫です。
基本的には、EC2とSystems Managerのコンソールからワンクリックで接続でき、CLIを通じてターミナルからも接続可能です。
Session ManagerによるSSHの課題解決
-
キーペア管理の必要性
Session Managerはキーペアの代わりにIAMを通じて認証を処理します。これにより、ユーザーとポリシーの管理を統合でき、運用効率が向上します。
また、IAM管理の下でMFA認証を強制できるため、セキュリティも強化されます。 -
ロギングシステムの構築と管理
CloudTrailでアクセスログを確認でき、CloudWatch Logsを通じてセッションログも追跡できるため、別途ロギングシステムの構築は不要です。 -
動的IPおよびポート開放の問題
EC2のインバウンドポートを開放する必要がなく、EC2からSystems Managerエンドポイントへのアウトバウンドのみを許可すれば済みます。 -
ローカルネットワークリソースへのアクセス
基本的にはパブリックサブネットのEC2を対象としていますが、設定次第でプライベートネットワークのEC2にもアクセスできます。
プライベートサブネットのEC2インスタンスがSystems Managerと通信するには、NAT Gatewayを経由してインターネット接続する方法と、VPCエンドポイントを使用してAWSネットワーク内で直接接続する方法の2つがあります。
NAT Gateway

プライベートサブネットにインスタンスを配置し、NAT Gatewayを介してSystems Managerに接続できます。
VPCエンドポイント

VPCエンドポイントとPrivateLinkを使用して、高いセキュリティを維持しながらプライベートな接続を構成できます。AWSはSystems Manager用の3つのVPCエンドポイントを提供しています。
- ssm
- ssmmessages
- ec2messages
Session Managerを使用するための条件は次の通りです。(2025年4月時点)
- EC2インスタンスにAWS Systems Manager Agent(SSM Agent)がインストールされていること。
- EC2インスタンスプロファイルにAmazonSSMManagedInstanceCore権限が含まれていること。
- Systems Managerとの通信のためにアウトバウンド接続が許可されていること(インバウンド設定は不要)。
- インスタンスセッションを実行するための権限が付与されていること。
参考 AWS公式ドキュメント<Session Managerの前提条件>
3. EC2 Instance Connect (EIC)
EC2 Instance Connect (EIC)を使用すると、プライベートネットワークにあるインスタンスにも安全にアクセスでき、サービス自体は無料で利用できます。
構成図

従来、EICはパブリック環境のインスタンスにのみ接続可能でしたが、AWS re:Inforce 2023でEIC Endpointが公開され、プライベート環境にあるインスタンスにも接続できるようになりました。
EIC Endpointは、TCPプロキシとして機能し、WebSocketトンネルを作成することで、プライベートネットワーク内のインスタンスに安全に接続できる機能を提供します。
これにより、パブリックIPがなくても、プライベートサブネット内のEC2インスタンスに直接アクセスすることが可能になります。
ユーザーがインスタンスに接続しようとすると、一時的なSSHキーペアが生成され、60秒間インスタンスのメタデータに公開鍵が登録されます。その後、生成された一時的な秘密鍵で接続が行われます。
この一時キーペアは毎回生成・削除されるため、ユーザーが別途管理する必要はありません。
SessionManagerに比べると、単一AZのみの配置制限、セッションログ記録機能の不足、セッション時間の制御性において劣る点がありますが、
無料で利用できるという点は大きな魅力です。開発の段階や小規模なプロジェクトにとっては嬉しいポイントになると思います。
また、EICを利用することでもSSHの課題を充分に対応できます。
EICによるSSHの課題解決
-
キーペア管理の必要性
EICはIAMベースのユーザーおよびポリシー管理により効率性を高め、MFA認証を強制できます。
実際にはSSHを使用しますが、接続時に毎回一時的なSSHキーを発行するため、別途SSHキーペアを管理する必要はありません。 -
直接ロギングシステムの構築と管理
CloudTrailを通じてアクセスログは確認できますが、セッションログは記録できません。 -
動的IPおよびポート開放
EICエンドポイントのセキュリティグループのインバウンド設定のみで接続を許可できるため、管理が容易です。 -
ローカルネットワークリソースへのアクセス
EICエンドポイントを利用して、プライベート環境でも安全な接続が可能です。
EICを使用するための条件は次の通りです。(2025年4月時点)
- EICエンドポイントと接続するEC2のセキュリティグループに
22あるいは3389番ポートのインバウンドとアウトバウンドの接続が許可されていること。 - EC2 Instance Connect パッケージがインストール済みであること。
- EC2InstanceConnect権限が付与されていること。
参考 AWS公式ドキュメント<EICの前提条件>