SSMで実現するEC2へのSSHレス接続設定とトラブルシューティング

はじめに

EC2インスタンスへのログイン管理において、セキュリティグループで「ポート22(SSH)」をインターネットに開放することは、不正アクセスの標的になる大きなリスクを伴います。本記事では、ポート22を完全に閉じたまま、安全にEC2へシェル接続できる「AWS Systems Manager(SSM)セッションマネージャー」の導入手順と、実務で直面しやすいトラブル解決法を徹底解説します。

前提知識/必要な理由

従来のSSH接続では、踏み台サーバーの管理やSSHキーペアの厳重な保管、IP制限のメンテナンスなど、運用負荷が高いという課題がありました。SSMセッションマネージャーを採用すべき理由は以下の通りです。

  • セキュリティの向上:インバウンドのポート22を開放する必要がなく、踏み台サーバーも不要になります。
  • アクセス権の一元管理:IAMポリシーを使用して、特定のユーザーやグループに対してEC2への接続権限を細かく制御できます。
  • 監査ログの自動取得:実行されたコマンド操作のログを、Amazon S3やCloudWatch Logsへ自動的に記録できます。

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

SSMセッションマネージャーを用いて、EC2へSSHレスで接続するための具体的なステップです。

Step 1. EC2用のIAMロールの作成とアタッチ

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

  • AWSマネジメントコンソールで「IAM」を開き、「ロールの作成」をクリックします。
  • 信頼されたエンティティタイプで「AWSサービス」、ユースケースで「EC2」を選択します。
  • 許可ポリシーの検索窓で AmazonSSMManagedInstanceCore を検索し、チェックを入れてロールを作成します(例:EC2-SSM-Role)。
  • 対象のEC2インスタンスのアクションメニューから「セキュリティ」>「IAMロールを変更」を選択し、作成したロールをアタッチします。

Step 2. セキュリティグループの変更

対象EC2インスタンスのセキュリティグループのインバウンドルールから、ポート22(SSH)の許可ルールを削除します。SSMはアウトバウンド(HTTPS/443)の通信を利用するため、インバウンドルールはすべて空でも接続可能です。

Step 3. クライアント環境のセットアップ(AWS CLIとプラグイン)

ローカルPCのターミナルから接続する場合、AWS CLIに加え、拡張ライブラリである「Session Manager Plugin」の導入が必要です。

macOSの場合(Homebrewを使用):

brew install --cask session-manager-plugin

Windowsの場合(PowerShell):
公式のインストーラー(MSI)をダウンロードして実行するか、以下のコマンドを実行します。

Start-BitsTransfer -Source "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/windows_amd64/SessionManagerPluginSetup.msi" -Destination "C:\SessionManagerPluginSetup.msi"
Start-Process msiexec.exe -ArgumentList "/i C:\SessionManagerPluginSetup.msi /quiet" -Wait

Step 4. 接続確認

設定完了後、ローカルのターミナルから以下のAWS CLIコマンドを実行し、EC2へ接続できるか確認します(インスタンスIDは実際の環境に合わせて書き換えてください)。

aws ssm start-session --target i-0123456789abcdef0

「Starting session with SessionId…」と表示され、プロンプトが切り替われば接続成功です。

実務での注意点とトラブルシューティング

1. プライベートサブネットから接続できない場合の対処法

インターネットへのルートを持たないプライベートサブネットに配置されたEC2の場合、SSMエンドポイントと通信できずに接続エラーとなります。その場合は、VPCエンドポイント(AWS PrivateLink)を作成し、EC2が所属するサブネットに配置してください。必要なエンドポイントは以下の3つです(すべてインターフェイス型、HTTPS/443許可のセキュリティグループを適用)。

  • com.amazonaws.[region].ssm
  • com.amazonaws.[region].ssmmessages
  • com.amazonaws.[region].ec2messages

2. SSM Agentの動作確認

Amazon Linux 2/3やUbuntuの最新AMIには、標準でSSM Agentがプリインストールされています。しかし、古いOSやカスタムAMIの場合は手動インストールが必要な場合があります。起動しない場合は以下のコマンドでステータスを確認してください。

sudo systemctl status amazon-ssm-agent

まとめ

SSMセッションマネージャーを導入することで、ポート22を閉じたまま安全かつ容易にEC2インスタンスを管理できるようになります。踏み台サーバーの維持費や鍵管理の手間を削減できるため、現在のインフラ設計においては必須のベストプラクティスです。プライベートサブネットでの構成時にはVPCエンドポイントの設定を忘れずに行い、セキュアなインフラ環境を構築しましょう。

上部へスクロール