はじめに

AWS EC2インスタンスに接続する際、一般的に使用される方法は、次の3つかと思います。

  1. SSH
  2. Session Manager
  3. EC2 Instance Connect (EIC)

本記事では各サービスについての内容とSession ManagerやEICを用いることで、SSHのPainPointを解決することを記載したいと思います。


1. SSH

構成図

SSH接続について簡単に紹介させていただきます。

SSHを利用するには、認証用のキーペア(公開鍵、秘密鍵)を用意する必要があります。
クライアントには秘密鍵を、サーバーには公開鍵を保持します。秘密鍵を使った認証を経て生成された対称鍵を用いてデータを暗号化し、安全に通信できます。

SSHはEC2インスタンスに限らず、サーバー接続時に広く利用される安全な接続方法ですが、次のような大小の不便が発生することがあります。

SSH使用時の課題

  1. キーペア管理の必要性
    ユーザーやリソースが増えると、管理しなければならない鍵の数が大幅に増えます。 
    1人1ユーザの使用が原則ですが、実務ではキーを共有して使用する問題が発生することがありますね。

  2. ロギングシステムの構築と管理
    SSH接続の記録を残すには別途ロギングシステムを構築、管理する負担があります。

  3. 動的IPおよびポート開放の問題
    パブリックIPを使用する場合、セキュリティグループで一定の保護は可能ですが、動的IP環境では管理が難しくなるので、セキュリティリスクが増加します。

  4. ローカルネットワークリソースへのアクセス不可
    プライベートネットワークのリソースにアクセスするには、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の課題解決

  1. キーペア管理の必要性
    Session Managerはキーペアの代わりにIAMを通じて認証を処理します。これにより、ユーザーとポリシーの管理を統合でき、運用効率が向上します。
    また、IAM管理の下でMFA認証を強制できるため、セキュリティも強化されます。

  2. ロギングシステムの構築と管理
    CloudTrailでアクセスログを確認でき、CloudWatch Logsを通じてセッションログも追跡できるため、別途ロギングシステムの構築は不要です。

  3. 動的IPおよびポート開放の問題
    EC2のインバウンドポートを開放する必要がなく、EC2からSystems Managerエンドポイントへのアウトバウンドのみを許可すれば済みます。

  4. ローカルネットワークリソースへのアクセス
    基本的にはパブリックサブネットのEC2を対象としていますが、設定次第でプライベートネットワークのEC2にもアクセスできます。

プライベートサブネットのEC2インスタンスがSystems Managerと通信するには、NAT Gatewayを経由してインターネット接続する方法と、VPCエンドポイントを使用してAWSネットワーク内で直接接続する方法の2つがあります。

NAT Gateway

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

 

VPCエンドポイント

VPCエンドポイントとPrivateLinkを使用して、高いセキュリティを維持しながらプライベートな接続を構成できます。AWSはSystems Manager用の3つのVPCエンドポイントを提供しています。

  1. ssm
  2. ssmmessages
  3. ec2messages

Session Managerを使用するための条件は次の通りです。(2025年4月時点)

  • EC2インスタンスにAWS Systems Manager Agent(SSM Agent)がインストールされていること。
  • EC2インスタンスプロファイルにAmazonSSMManagedInstanceCore権限が含まれていること。
  • Systems Managerとの通信のためにアウトバウンド接続が許可されていること(インバウンド設定は不要)。
  • インスタンスセッションを実行するための権限が付与されていること。

参考 AWS公式ドキュメント<Session Managerの前提条件

このように、Session Managerを使用すれば、プライベートネットワークにあるインスタンスにも安全に接続することができます。
ただし、VPC Endpointを使用する場合、各Endpointにつき約$10/月の固定費が発生します。(2025年4月時点、データ転送費用は除く)

費用を考えるとEICを利用することもいい対案になるかと思います。


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の課題解決

  1. キーペア管理の必要性
    EICはIAMベースのユーザーおよびポリシー管理により効率性を高め、MFA認証を強制できます。
    実際にはSSHを使用しますが、接続時に毎回一時的なSSHキーを発行するため、別途SSHキーペアを管理する必要はありません。

  2. 直接ロギングシステムの構築と管理
    CloudTrailを通じてアクセスログは確認できますが、セッションログは記録できません。

  3. 動的IPおよびポート開放
    EICエンドポイントのセキュリティグループのインバウンド設定のみで接続を許可できるため、管理が容易です。

  4. ローカルネットワークリソースへのアクセス
    EICエンドポイントを利用して、プライベート環境でも安全な接続が可能です。

EICを使用するための条件は次の通りです。(2025年4月時点)

  • EICエンドポイントと接続するEC2のセキュリティグループに
    22あるいは3389番ポートのインバウンドとアウトバウンドの接続が許可されていること。
  • EC2 Instance Connect パッケージがインストール済みであること。
  • EC2InstanceConnect権限が付与されていること。

参考 AWS公式ドキュメント<EICの前提条件


SSH、Session Manager、EICの比較

項目 SSH Session Manager EC2 Instance Connect (EIC)
認証方式 SSHキーペア IAM認証 IAM認証
接続制御 SSHキー管理が必要 IAMポリシーでアクセス制御可能 IAMポリシーでアクセス制御可能
MFAサポート 基本的に不可 可能 可能
ログ 別途構築が必要 CloudTrailおよびCloudWatch Logsでログ確認可能 CloudTrailでログ確認可能(セッションログ不可)
接続可能なネットワーク パブリックサブネット(プライベートサブネットはBastion Host必要) パブリックおよびプライベートサブネット パブリックおよびプライベートサブネット
インバウンド開放 アクセス元の22番ポート 不要 EICからの22,3389番ポート
コスト 無料 VPCエンドポイントやNAT Gatewayのコスト発生 無料
可用性 複数のAZにわたって設定可能 1つのAZのみ設定可能

 


まとめ

今回は、EC2インスタンスへの接続方法としてSSHの簡便さと運用上の課題、
そしてその課題を解決するSession ManagerとEC2 Instance Connectについて紹介しました。
プロジェクトの規模や要件に応じて適切な方法を選択することをお勧めします。

SSH

  • 小規模な環境や一時的な接続が必要な場合
  • 既存のSSH基盤やツールとの互換性がある場合

Session Manager

  • セキュリティとコンプライアンスが重視される場合
  • 詳細なセッションログ記録や監査が必要な場合
  • 複数のAZにわたる高可用性が求められる場合
  • インバウンドポートを一切開放したくない環境

EC2 Instance Connect (EIC)

  • コスト効率が重視される場合
  • 詳細なセッションログは不要な場合
  • プライベートサブネットのインスタンスに簡単にアクセスしたい場合
  • 単一AZでの運用で問題ない場合
  • SSH/RDPのみの接続で十分な場合