踏み台不要!SSMセッションマネージャーでEC2に接続する手順

はじめに

AWSの運用において、EC2インスタンスへのリモート接続は日常的に発生する作業です。しかし、従来のSSH接続では「踏み台サーバーの管理コスト」「SSH鍵の厳重な管理」「セキュリティグループでポート22を解放するセキュリティリスク」といった課題がつきまといます。

これらの課題をすべて解決するのが、AWS Systems Manager(SSM)の「Session Manager(セッションマネージャー)」です。本記事では、踏み台サーバーを排除し、安全かつシンプルにEC2へ接続するための具体的な設定手順を解説します。

前提知識/必要な理由

SSMセッションマネージャーは、AWSのマネージドサービスを利用してEC2インスタンスへのセキュアなシェル接続を提供する機能です。これを利用すべき主な理由は以下の3点です。

  • インバウンドポートの開放が不要:EC2インスタンス側でポート22を開放する必要がありません。SSMエージェントからAWS APIへのアウトバウンド通信のみで動作するため、攻撃表面を最小限に抑えられます。
  • 鍵管理からの解放:SSH公開鍵や秘密鍵の作成・配布・管理が不要になり、すべてAWS IAMの権限(ポリシー)でアクセス制御を行います。
  • 操作ログの自動記録:接続中の実行コマンドや出力を、Amazon S3やAmazon CloudWatch Logsへ自動的に記録し、監査ログとして保管できます。

具体的な設定手順・設計方法

SSMセッションマネージャーを使ってEC2インスタンスへ接続するための設定手順は以下の4ステップです。

ステップ1:EC2用のIAMロールを作成する

EC2がSSMサービスと通信できるようにするためのIAMロールを作成します。

  1. IAMコンソールを開き、「ロールの作成」を選択します。
  2. 信頼されたエンティティタイプで「AWSのサービス」、ユースケースで「EC2」を選択します。
  3. 許可ポリシーの追加画面で、AWS管理ポリシーである「AmazonSSMManagedInstanceCore」を検索し、チェックを入れます。
  4. ロール名(例: EC2-SSM-Access-Role)を入力し、ロールを作成します。

ステップ2:EC2インスタンスを起動し、IAMロールを割り当てる

作成したIAMロールをEC2インスタンスにアタッチします。新規起動時、または既存のインスタンスに対して設定します。

  • AMIの選択:Amazon Linux 2やAmazon Linux 2023などの標準的なAMIには、接続に必要な「SSM Agent」が最初からプリインストールされているため、特別な導入手順は不要です。
  • IAMプロファイルの設定:EC2の「高度な詳細」または「セキュリティ」設定から、ステップ1で作成したIAMロールをインスタンスに割り当てます。

ステップ3:ローカル環境にSession Managerプラグインを導入する

AWS CLI経由でローカルPCからEC2に接続するためには、AWS CLIに加えて専用の拡張モジュールである「Session Managerプラグイン」のインストールが必要です。各OS向けの導入手順は以下の通りです。

macOSの場合(Homebrewを使用):

# Homebrewを使用してプラグインをインストール
brew install --cask session-manager-plugin

# インストール確認(バージョンが表示されれば成功)
session-manager-plugin --version

Windowsの場合(PowerShellを使用):

公式のインストーラーを実行するか、以下のPowerShellコマンドを使ってサイレントインストールを行います。

# インストーラーのダウンロードと実行
Invoke-WebRequest "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/windows_amd64/SessionManagerPluginSetup.exe" -OutFile "SessionManagerPluginSetup.exe"
Start-Process -FilePath ".\SessionManagerPluginSetup.exe" -ArgumentList "/S" -Wait

# インストール確認(バージョンが表示されれば成功)
session-manager-plugin

ステップ4:AWS CLIからEC2インスタンスへ接続する

ローカルのターミナルまたはコマンドプロンプトから、以下のコマンドを実行して接続します。i-xxxxxxxxxxxxxxxxx の部分には、対象EC2インスタンスのインスタンスIDを記述してください。

# SSMセッションの開始コマンド
aws ssm start-session --target i-xxxxxxxxxxxxxxxxx

コマンド実行後、シェルが起動し、EC2のOSにログインできれば接続完了です。

実務での注意点

実務でSSMセッションマネージャーを本番環境等に導入する際は、以下の構成・設計に注意してください。

  • プライベートサブネットでの通信経路設計:インターネットへのルートを持たない完全なプライベートサブネット内のEC2に接続する場合、VPCエンドポイント(AWS PrivateLink)の設置が必要です。具体的には以下の3つのエンドポイントを作成し、EC2が所属するセキュリティグループからのHTTPS(443ポート)のインバウンド通信を許可してください。
    • com.amazonaws.[region].ssm
    • com.amazonaws.[region].ssmmessages
    • com.amazonaws.[region].ec2messages
  • IAMポリシーによるアクセス制限:特定のユーザーにのみ特定のEC2への接続を許可したい場合は、接続元のIAMユーザーやロールに対して、リソース制限を明記したIAMポリシーを適用してください。

まとめ

SSMセッションマネージャーを導入することで、SSH鍵の管理から解放され、セキュリティグループの管理も劇的にシンプルになります。踏み台サーバーを廃止することは、インフラのコスト削減だけでなく、セキュリティリスクの低減にも直結します。ぜひ本手順を参考に、より安全なAWSインフラを設計・構築してください。

上部へスクロール