EC2 への接続方法の選び方:Session Manager と EC2 Instance Connect を比較してみた

EC2 への接続方法の選び方:Session Manager と EC2 Instance Connect を比較してみた

EC2 への接続方法として一般的な Session Manager、EC2 Instance Connect Endpointの経路を、ログ、準備、コストの観点から比較し、どの方法を選ぶべきか根拠を持って判断できるようにまとめました。
2026.10.28

こんにちは、コンサルティング部のシモンです。

皆さんは EC2 への接続方法を根拠を持って選びたいと思ったことはありますか?私はあります。

EC2 への接続方法として代表的なのは Amazon EC2 Instance Connect や Session Manager です。どちらを選んでもブラウザにシェルが開き、コマンドを送って結果を見るという体験はほとんど変わりません。一方で、これらは残るログ、事前に必要な準備、かかるコストが違います。

本記事では Linux インスタンスを対象に、Session Manager、EC2 Instance Connect Endpoint(以下、EIC Endpoint)、パブリック IP 経由の EC2 Instance Connect の 3 つの経路を比べます。

結論

  • 基本は Session Manager を使います。インスタンスのインバウンドのポートを開けずに接続でき、入力したコマンドとその出力(操作ログ)を残せます
  • インスタンスに SSM Agent や IAM ロールを用意できない場合は、EIC Endpoint を使います
  • 操作ログが要らず、NAT ゲートウェイもないプライベートサブネットでは、コストの差で EIC Endpoint を選びます。EIC Endpoint は無料で、Session Manager には VPC エンドポイント 2 つ × AZ 数の時間料金がかかります。ただし、EIC Endpoint は同時 20 接続までです。この上限に収まらない場合は Session Manager を選びます
  • scp や VS Code Remote SSH などの SSH のツールは、どちらの経路でもほぼ同じ SSH の設定で使えます。設定の違いは選ぶ理由になりません
  • ログイン前の sshd がインターネットに面するため、パブリック IP 経由の EC2 Instance Connect は非推奨です

判断基準 Session Manager EC2 Instance Connect Endpoint (参考)EC2 Instance Connect(パブリック IP)
操作ログ Amazon S3 か Amazon CloudWatch Logs に残せる。承認フローも付けられる(有料) 残らない 残らない
SSH のツール ProxyCommand の設定と鍵ペアで使える。操作ログは残らない 同左。大容量の転送は抑制される 通常の SSH として使える
インスタンスの準備 SSM Agent と IAM ロール EIC Endpoint からの 22 番ポートの許可。使い捨ての鍵を使うなら EC2 Instance Connect パッケージも EC2 Instance Connect パッケージ、パブリック IP、インターネット側からの 22 番ポートの許可
周辺の準備 NAT ゲートウェイがなければ VPC エンドポイント 2 つ EIC Endpoint 1 つ インターネットゲートウェイ
同時に使う人数 セッションの開始は毎秒 3 回まで EIC Endpoint 1 つあたり同時 20 接続まで AWS 側の制限なし
コスト NAT ゲートウェイがなければ VPC エンドポイント 2 つ × AZ 数の時間料金 無料 パブリック IPv4 アドレスの時間料金

3 つの接続経路の仕組み

Session Manager

SSM Agent は、インスタンスの起動時から Systems Manager へアウトバウンドの接続を張り、その接続で指示を待ち受けています。

利用者が IAM の認可を受けてセッションを開始すると、Systems Manager はこの接続を通じて、エージェントにセッションの開始を伝えます。エージェントはセッション用の接続を、さらに Systems Manager へアウトバウンドで張ります。利用者の端末(ブラウザか Session Manager plugin)も、Systems Manager に HTTPS で接続します。

Systems Manager はユーザーのキー入力をエージェントへ、シェルの出力を利用者へ中継します。インスタンス内のエージェントから接続を張って中継されている情報を取りに行くので、インスタンスへ向かう接続はなく、セキュリティグループにインバウンドのルールは要りません。シェルのセッションには sshd も使いません。

Session Manager の接続経路

EC2 Instance Connect Endpoint

利用者が接続を始めて IAM の認可を受けると、AWS のネットワークを通って、VPC 内にある EIC Endpoint の ENI までトンネルが張られます。SSH はこのトンネルを通り、ENI からインスタンスのプライベート IP の 22 番ポートに届きます。

コンソールや AWS CLI の aws ec2-instance-connect ssh で接続すると、使い捨ての鍵ペアが自動で作られ、公開鍵がインスタンスに送られます。この公開鍵はインスタンスメタデータ(IMDS)に 60 秒だけ置かれ、sshd はログイン時にここから鍵を取り出して照合します。IMDS は、インスタンスの中からだけ届く情報の窓口で、VPC のネットワークを通りません。使い捨ての鍵のかわりに、自前の鍵ペアを使うこともできます。

トンネルを通るので、パブリック IP もインターネットゲートウェイも要りません。インスタンスの 22 番ポートは、EIC Endpoint のセキュリティグループからの接続だけを受け付けるように設定します。

EC2 Instance Connect Endpoint の接続経路

(参考)EC2 Instance Connect(パブリック IP 経由)

使い捨ての鍵を IMDS に置く仕組みは、EIC Endpoint の場合と同じです。違うのは SSH の通り道で、インターネットゲートウェイを通って、インスタンスのパブリック IP の 22 番ポートに直接届きます。

ログイン前の sshd にインターネットから到達できるため、この経路は非推奨です。sshd 自体に脆弱性があれば、IAM の認可や使い捨ての鍵より手前で攻撃を受けます。2024 年 7 月に公開された regreSSHion(CVE-2024-6387)という脆弱性は、一部の Linux の sshd で認証なしにリモートからコードを実行されるおそれがあるものでした。

セキュリティグループで、接続元を EC2 Instance Connect のサービスのマネージドプレフィックスリストに絞ることはできます。それでも、パブリック IP と 22 番ポートの待ち受けは残り、セキュリティグループの設定 1 つでインターネットに晒される状態です。また、このプレフィックスリストが許可するのは、コンソールのブラウザからの接続だけです。CLI や手元の SSH クライアントから使う場合は、自分の IP アドレスにも 22 番ポートを開ける必要があり、運用の中で許可する範囲が広がりがちです。EIC Endpoint を使えば、同じ SSH の体験をインターネットに晒さずに得られます。

(参考)EC2 Instance Connect(パブリック IP 経由)の接続経路

判断基準ごとの違い

操作ログを残す必要があるか

操作ログが必要なら Session Manager を選びます。入力したコマンドとその出力まで残せるのは、3 つの経路のうち Session Manager だけです。

AWS CloudTrail に残るのは、どの経路も接続を始めたときの API 呼び出しまでです。

Session Manager の操作ログは、S3 か CloudWatch Logs に送るように設定できます。

ただし、Session Manager でも、ポートフォワーディングのセッションと SSH を中継するセッションは操作ログが残りません。操作ログを残したい作業は、SSH を使わずにシェルのセッションで行います。

操作ログに加えて承認フローが必要なら、Systems Manager の just-in-time node access(有料)を使えます。接続の前に申請と承認を挟めるのは Session Manager だけです。

(参考)パブリック IP 経由の EC2 Instance Connect でも、CloudTrail に残るのは公開鍵を送ったときの API 呼び出しだけで、SSH の中で何をしたかは AWS 側に残りません。

SSH のツールを使いたいか

scp、rsync、VS Code Remote SSH などは、Session Manager でも EIC Endpoint でもほぼ同じ設定で使えるので、SSH のツールを使うかどうかで経路を選ぶ必要はありません。ただし、EIC Endpoint は管理用の通信を想定していて大容量の転送が抑制されるので、大きなファイルを転送する作業には向きません。

SSH のツールからは、手元の端末の ~/.ssh/config に次のどちらかの設定を書いて接続します。どちらもインスタンス ID をホスト名として指定する設定で、違うのは ProxyCommand の 1 行だけです。

Session Manager 経由で SSH を使う ~/.ssh/config
Host i-*
    User ec2-user
    IdentityFile ~/.ssh/my-key-pair.pem
    ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
EC2 Instance Connect Endpoint 経由で SSH を使う ~/.ssh/config
Host i-*
    User ec2-user
    IdentityFile ~/.ssh/my-key-pair.pem
    ProxyCommand aws ec2-instance-connect open-tunnel --instance-id %h

SSH で接続するので、どちらの経路でもインスタンスの sshd を使います。Session Manager でも、シェルのセッションと違って sshd が動いている必要があります。それでも、エージェントがインスタンスの中から sshd につなぐので、インバウンドのルールは要らないままです。

2 つの設定はどちらも、IdentityFile に指定した自前の鍵ペアで認証します。そのため、鍵の配布、更新、失効の管理はインスタンスを運用する側の責任になります。ただし、どちらの経路でも接続できるかどうかは IAM で制御されるので、鍵が漏れただけでは接続できません。

どちらの経路でも、SSH の中で行った操作は操作ログに残りません。SSH が中身を暗号化するので、Session Manager からも中身は見えません。

(参考)パブリック IP 経由の EC2 Instance Connect は、通常の SSH としてそのまま使えます。

事前に何を用意できるか

インスタンスに SSM Agent と IAM ロールを用意できるなら Session Manager を、用意できないなら EIC Endpoint を選びます。周辺の準備で大きく違うのは、NAT ゲートウェイがない場合に Session Manager だけ VPC エンドポイントが 2 つ要る点です。

インスタンスの準備:

観点 Session Manager EC2 Instance Connect Endpoint (参考)EC2 Instance Connect(パブリック IP)
ソフトウェア SSM Agent(最近の主要な AMI の多くにプリインストール) EC2 Instance Connect パッケージ(使い捨ての鍵を使う場合。最近の主要な AMI の多くにプリインストール) EC2 Instance Connect パッケージ
IAM ロール インスタンスプロファイルか DHMC 不要 不要
パブリック IP 不要 不要 必要
セキュリティグループ インバウンドなし。アウトバウンドの 443 番ポート EIC Endpoint のセキュリティグループからの 22 番ポートを許可 インターネット側からの 22 番ポートを許可

周辺の準備:

観点 Session Manager EC2 Instance Connect Endpoint (参考)EC2 Instance Connect(パブリック IP)
VPC に作るもの NAT ゲートウェイがなければ VPC エンドポイント 2 つ EIC Endpoint 1 つ インターネットゲートウェイ
そのセキュリティグループ VPC エンドポイントはインスタンスからの 443 番ポートを許可 EIC Endpoint はインスタンスへの 22 番ポートを許可 なし

表の IAM ロールの行にある Default Host Management Configuration(DHMC)は、アカウントとリージョンの単位で一度設定すると、インスタンスプロファイルなしで Systems Manager の機能を使えるようにする設定です。インスタンスごとに IAM ロールを付けられない環境でも、DHMC を使えば Session Manager を選べます。

操作する人の側の準備:

CLI から使う場合のローカルのツール

  • Session Manager: AWS CLI v2 と Session Manager plugin
  • EIC Endpoint: AWS CLI v2
  • (参考)EC2 Instance Connect(パブリック IP): AWS CLI v2

接続する人の IAM ポリシーで、接続の許可を絞り込める項目

  • Session Manager: 対象のインスタンス、セッションのドキュメント、OS 上のログインユーザー(Run As)
  • EIC Endpoint: 接続先のポート、宛先のプライベート IP、接続時間
  • (参考)EC2 Instance Connect(パブリック IP): 対象のインスタンス、OS 上のログインユーザー

何人で同時に使うか

EIC Endpoint の同時 20 接続に収まらない使い方なら、Session Manager を選びます。

EIC Endpoint は VPC ごとに 1 つしか作れないので、VPC 内のすべてのインスタンスへの接続が 1 つの EIC Endpoint を共有します。同時接続は EIC Endpoint 1 つあたり 20 までで、引き上げられません。チームで使うと上限に届くことがあります。Session Manager のクォータで同時に使う人数に関わるのは、セッションを開始するリクエストのレート(毎秒 3 回)です。

(参考)パブリック IP 経由の EC2 Instance Connect では、同時に使う人数を AWS 側では制限しません。

コストをどこまで抑えたいか

EIC Endpoint は追加料金なしで使えます。Session Manager も EC2 では無料ですが、NAT ゲートウェイがないプライベートサブネットでは VPC エンドポイントの時間料金がかかります。NAT ゲートウェイがあれば新たに作るリソースはなく、コストで選ぶ必要はありません。

NAT ゲートウェイがないプライベートサブネットで Session Manager を使うには、インターフェイス型の VPC エンドポイントを ssm と ssmmessages の 2 つ作ります。料金は VPC エンドポイントを置く AZ ごとにかかります。ap-northeast-1 では VPC エンドポイント 1 つ、AZ 1 つあたり 1 時間 0.014 USD で、2 つを 2 つの AZ に置くと 1 か月(730 時間)で 40.88 USD です(2026 年 10 月時点)。

(参考)パブリック IP 経由の EC2 Instance Connect では、パブリック IPv4 アドレスの料金がかかります。ap-northeast-1 では 1 時間 0.005 USD で、1 か月で 3.65 USD です(2026 年 10 月時点)。

まとめ

  • 基本は Session Manager を使います。インバウンドのポートを開けずに接続でき、操作ログを残せます
  • SSM Agent や IAM ロールを用意できないとき、または NAT ゲートウェイがなく操作ログも要らないときは、EIC Endpoint を使います。EIC Endpoint は無料ですが、同時 20 接続までの上限があります
  • パブリック IP 経由の EC2 Instance Connect は非推奨です

参考資料

仕組みと接続方法:

IAM ポリシーとクォータ:

料金:

脆弱性:

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事