AWS セッションマネージャー(SSM)で SSH 鍵不要の EC2 接続を実現する手順

2026年6月27日

はじめに

EC2 インスタンスへのアクセスには、従来 SSH 秘密鍵とパブリック IP アドレスが必要でした。しかし、鍵ファイルの管理漏れや、インバウンドポート 22 を開放することによるセキュリティリスクは、運用上の大きな課題になりがちです。

AWS のセッションマネージャー(Systems Manager Session Manager / SSM)を使うと、秘密鍵もパブリック IP アドレスも不要で EC2 インスタンスに安全に接続できます。さらに、プライベートサブネットに配置した EC2 にも VPC エンドポイント経由でアクセス可能です。本記事では、IAM ロールの作成からコンソールでの接続確認まで、パブリック・プライベート両方のケースを手順付きで解説します。

セッションマネージャーの仕組みと3つのメリット

セッションマネージャーは AWS Systems Manager のひとつの機能で、EC2 インスタンス上で動作する SSM エージェントが SSM サービスとの接続を確立します。ユーザーは AWS マネジメントコンソールまたは AWS CLI からシェルセッションを開始できます。

  • SSH 鍵の管理が不要:鍵ペアを発行・保管する必要がないため、鍵の紛失・漏洩リスクをなくせる
  • インバウンドポートを開放しない:セキュリティグループでポート 22(SSH)や 3389(RDP)を開放せずに済む
  • プライベートサブネットの EC2 に接続できる:VPC エンドポイントを使えばインターネット経由の通信なしでアクセス可能

事前準備:IAM ロールの作成と EC2 へのアタッチ

1. IAM ロールを作成する(AmazonSSMManagedInstanceCore)

セッションマネージャーを利用するには、EC2 が SSM サービスにアクセスするための IAM ロールを作成し、インスタンスにアタッチする必要があります。まず IAM コンソールのロールタブから「ロールの作成」をクリックします。

IAM コンソールのロール一覧画面でロールの作成ボタンをクリックしている様子

信頼されたエンティティのタイプは EC2 を選択して次に進みます。

IAM ロール作成でエンティティタイプに EC2 を選択している画面

アタッチするポリシーは AmazonSSMManagedInstanceCore をフィルタで検索して選択してください。このポリシーは「セッションマネージャーで EC2 インスタンスにアクセスするためだけ」のものです。パッチマネージャーなど他の Systems Manager 機能を利用する場合は、別途必要なポリシーを追加してください。

IAM ポリシー一覧で AmazonSSMManagedInstanceCore を選択している画面

タグの設定は任意です。最後にロール名と説明を入力してロールの作成を完了します。

IAM ロールの名前と説明を入力して作成を完了する画面

2. EC2 インスタンスに IAM ロールをアタッチする

EC2 コンソールで対象のインスタンスを選択し、「アクション」→「セキュリティ」メニューから「IAM ロールを変更」をクリックします。インスタンス作成時にも設定できますが、後から変更する場合はこのメニューを利用します。

EC2 コンソールのアクションメニューから IAM ロールを変更を選択している画面

先ほど作成した IAM ロールを選択して保存します。

IAM ロールを選択してインスタンスに保存している画面

これで IAM 関連の設定は完了です。

3. SSM エージェントについて

セッションマネージャーを利用するには EC2 上で SSM エージェントが動作している必要があります。Amazon Linux 2 / Amazon Linux 2023・Ubuntu では SSM エージェントがプリインストール済みのため、追加のインストール手順は不要です。その他の OS へのインストール方法は 公式ドキュメント を参照してください。

パブリックサブネットの EC2 への接続確認

IAM ロールのアタッチまで完了していれば、パブリックサブネットに設置した EC2 への接続には追加の設定は不要です。EC2 インスタンスの画面で「接続」をクリックします。

EC2 コンソールで接続ボタンをクリックしている画面

「セッションマネージャー」タブから接続ボタンが押せるようになっているはずです。

注意:設定が正しくても、IAM ロールを付与した直後はセッションマネージャーが有効になるまで数分かかることがあります。しばらく待っても接続ボタンが押せない場合は、インスタンスを再起動してみてください。特に起動中のインスタンスに後からロールを設定した場合は再起動が有効です。

EC2 接続画面のセッションマネージャータブで接続ボタンが有効になっている画面

問題がなければ、以下のようにブラウザ上でシェルが起動します。

セッションマネージャーでブラウザ上にシェルが起動した画面

パブリックサブネットの EC2 へのアクセスは以上で完了です。

プライベートサブネットの EC2 への接続:VPC エンドポイントの作成

プライベートサブネットに配置した EC2 は、インターネットゲートウェイを経由する通信経路がないため、SSM のエンドポイントに直接接続できません。この場合は VPC エンドポイント(AWS PrivateLink)を作成することで、VPC 内部のプライベートな経路で SSM サービスと通信できるようにします。

1. 必要な 3 つの VPC エンドポイントを作成する

VPC コンソールのエンドポイントページを開き、以下の 3 つのインターフェースエンドポイントを作成します。

  • com.amazonaws.<リージョン>.ssm
  • com.amazonaws.<リージョン>.ssmmessages
  • com.amazonaws.<リージョン>.ec2messages

<リージョン> の部分は、EC2 を配置しているリージョン識別子に置き換えてください(例:東京リージョンなら ap-northeast-1)。

VPC とサブネットには EC2 が設置されているものを選択します。

VPC エンドポイントの作成画面で ssm エンドポイントを選択している様子
VPC エンドポイントの設定画面で VPC とサブネットを選択している画面

プライベートサブネットは有効のままにし、セキュリティグループは HTTPS(ポート 443)のインバウンドを許可しているものを選択してください。セッションマネージャーは HTTPS を使って SSM サービスと通信するためです。

VPC エンドポイントのセキュリティグループ選択画面

その他の項目はデフォルトのままで問題ありません。「エンドポイントの作成」ボタンをクリックし、上記の 3 つのエンドポイントを順番に作成してください。

作成には数分かかりますが、完了すると以下のように表示されます。

VPC エンドポイント 3 つが利用可能ステータスになっている画面

なお、セキュリティグループは VPC 内からのポート 443 を許可する設定にする必要があります。参考として以下のような構成が必要です。

VPC 内からの HTTPS インバウンドを許可したセキュリティグループのルール設定

これで VPC エンドポイントの作成は完了です。

2. プライベートサブネットの EC2 への接続を確認する

設定が完了していれば、パブリックサブネットの EC2 と同じ手順でセッションマネージャー経由の接続が可能になっています。

プライベートサブネットの EC2 にセッションマネージャーで接続できた画面

まとめ:セッションマネージャーが EC2 運用のセキュリティを高める理由

本記事で紹介した手順をまとめます。

  • IAM ロールの作成AmazonSSMManagedInstanceCore ポリシーをアタッチしたロールを EC2 用に作成する
  • IAM ロールのアタッチ:対象の EC2 インスタンスにロールを紐付ける(後からでも変更可能)
  • パブリックサブネット:IAM の設定だけで接続可能。SSH ポートの開放が不要
  • プライベートサブネット:ssm・ssmmessages・ec2messages の 3 つの VPC エンドポイントを追加で作成する

セッションマネージャーを採用すると、鍵管理の手間を省けるだけでなく、セキュリティグループのインバウンドルールをシンプルに保つことができます。パッチマネージャーやオートメーションなど他の Systems Manager 機能と組み合わせることで、EC2 の運用管理をさらに効率化できます。ぜひ本番環境への導入を検討してみてください。