AWS2分で読める

Session Manager と SSH を併用して EC2 に安全に接続する手順

公開踏み台を廃止した環境で、AWS Systems Manager Session Manager と SSH を組み合わせて EC2 にアクセスする具体手順をまとめます。

#aws#ssm#ec2#ssh#security#operations

Session Manager と SSH を併用して EC2 に安全に接続する手順

公開踏み台を使わずに EC2 へアクセスしたい場面では、AWS Systems Manager (Session Manager) をベースにした運用が有効です。 本記事では、aws ssm start-session を使った接続と、~/.ssh/config での ProxyCommand 設定までを整理します。


想定する構成

  • 踏み台 EC2 はプライベートネットワークに配置
  • 接続元はローカル端末 (macOS)
  • 認証は IAM + Session Manager を利用
  • 必要に応じて SSH も実行できるようにする

前提条件

  • AWS CLI がインストール済み
  • aws configure でプロファイル設定済み
  • 接続対象 EC2 に SSM Agent が導入済み
  • 接続ユーザーに必要な IAM 権限がある

1. PEM ファイルを配置して権限を設定

BASH
ls ~/.ssh
chmod 700 ~/.ssh/x.pem

運用上は鍵を使わない構成が理想ですが、既存の SSH 運用と併存する場合は上記の最低限の権限管理が必要です。


2. ~/.ssh/config に Session Manager 経由の設定を追加

SSHCONFIG
Host <環境名>
  HostName <EC2インスタンスID>
  User ssm-user
  Port 22
  ProxyCommand sh -c "aws --profile <profile名> ssm start-session --target %h --document-name AWS-StartSSHSession"
  IdentityFile ~/.ssh/<pemファイル名>
  IdentitiesOnly yes

ポイント:

  • HostName は IP ではなく EC2 インスタンス ID
  • ProxyCommand で SSM セッションを起動
  • これにより、インターネット公開不要で SSH 可能

3. SSH 接続を実行

BASH
ssh <環境名>

初回接続時にホスト確認が表示された場合は、内容を確認したうえで yes を選択します。


4. Session Manager だけで接続する場合

SSH を使わず、純粋に Session Manager で入る場合は次のコマンドを使います。

BASH
aws ssm start-session --target <EC2インスタンスID> --profile <AWS Profile名>

保守作業や簡易確認はこの方法だけで完結するケースが多いです。


よくあるつまずき

  • 権限エラー: IAM ポリシーに ssm:StartSession などが不足
  • 接続できない: EC2 側で SSM Agent 未導入、または IAM ロール不足
  • プロファイル違い: --profile 指定ミスで別アカウントへ接続している

まとめ

Session Manager を中心に据えることで、公開踏み台や 22 番ポート開放に依存しない安全な運用ができます。 既存 SSH フローが必要な場合でも、ProxyCommand 連携で段階的に移行しやすくなります。

RK

1997年生まれ

ITエンジニア

インフラ・SRE