0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS Systems Manager】Session Manager でEC2に接続する

0
Last updated at Posted at 2026-08-01

はじめに

EC2をパブリックサブネット → プライベートサブネットに移設した。
プライベートサブネットにはインターネットへアクセスするための設定がない。
ローカル環境(Windows Subsystem for Linux)からEC2のグローバルIP宛てにSSHで接続していたが、接続方法をSSHからSession Managerに変更する。

Session Managerとは

サービス概要

Session Manager はフルマネージド型の AWS Systems Manager ツール[(※1)]

Amazon Elastic Compute Cloud (EC2) インスタンス、エッジデバイス、オンプレミスサーバー、仮想マシン (VM) への安全な接続を確立[(※1)]

インバウンドポートを開いたり、踏み台ホストを維持したり、SSH キーを管理したりする必要はありません[(※1)]

通信の流れ

セッションを開始するための最初のコマンドを送信すると、Session Manager サービスは ID を認証し、IAM ポリシーにより付与されたアクセス権限を検証して、設定 (セッションの許容限度の確認など) を確認します。それから、SSM Agent にメッセージを送信して双方向接続を開きます。接続の確立後、John が次のコマンドを入力すると、SSM Agent からのコマンド出力がこの通信チャネルにアップロードされ、ローカルマシンに送り返されます。[(※1)]

スクリーンショット 2026-07-31 214253.png
(出典:※2)

以上を踏まえると、こんなかんじか。

=====

【クライアント】

【Session Manager】→【IAM】

【接続先サーバー(SSM Agent)】

=====

Session ManagerでEC2に接続する(コンソールから)

まずはコンソールから接続できる状態を目指す(参考:※3)。

SSM Agent導入

SSM Agent導入済みのAMIからEC2インスタンスを作成していたため、対応不要。

SSM Agentを導入する場合はこちらを参照。

なお、SSM Agent導入済み確認コマンドと出力結果は下のとおり。

【確認コマンド】
yum info amazon-ssm-agent

【出力結果】
Installed Packages
Name         : amazon-ssm-agent
Version      : 3.3.4624.0
Release      : 1.amzn2023
Architecture : x86_64
Size         : 118 M
Source       : amazon-ssm-agent-3.3.4624.0-1.amzn2023.src.rpm
Repository   : @System
Summary      : Manage EC2 Instances using SSM APIs
URL          : http://docs.aws.amazon.com/ssm/latest/APIReference/Welcome.html
License      : ASL 2.0
Description  : This package provides Amazon SSM Agent for managing EC2 Instances using SSM APIs

エンドポイントへの接続

EC2から以下のエンドポイントにHTTPS(ポート 443)で接続できる必要がある。

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

EC2が設置されているプライベートサブネットからインターネットへアクセスする手段がないため、VPCエンドポイントを作成。
スクリーンショット 2026-08-01 153611.png

なお、VPCエンドポイントに関連付けたセキュリティグループではEC2からポート 443へのインバウンド通信を許可している(参考:※4)。

コンソールにてVPCエンドポイントを作成する際、接続先サービスの検索はエンドポイント名を入力するとヒットしないので、エンドポイント名から".region.amazonaws.com"を除いて行うこと。
スクリーンショット 2026-08-01 145653.png

EC2にSSMへのアクセス権限を付与

EC2にアタッチしているIAMロールへAWS管理IAMポリシー AmazonSSMManagedInstanceCoreを設定。

しばらくすると、マネージドノードとして対象のEC2が表示されるようになった。
スクリーンショット 2026-08-01 185408.png

コンソールから接続実施

対象のEC2を選択して
ノードアクション > 接続
をクリック。
スクリーンショット 2026-08-01 192151.png

接続成功。
スクリーンショット 2026-08-01 185649.png

Session ManagerでEC2に接続する(ローカル環境から)

続いて、本題である、ローカル環境(Windows Subsystem for Linux)からの接続を目指す。

接続の流れとしては以下を想定。

  1. aws loginコマンドでIAMユーザーにログイン
  2. aws ssm start-sessionコマンドでEC2へ接続

本旨から逸れるため、aws loginについては割愛。
aws ssm start-sessionを使える環境を整え、ローカル環境からEC2への接続を実施する。

AWS CLIをインストール

以下のコマンドを実施(参考:※5)。

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

インストールOK

$ aws --version
aws-cli/2.36.14 Python/3.14.6 Linux/6.6.87.2-microsoft-standard-WSL2 exe/x86_64.ubuntu.24
$

AWS CLI 用の Session Manager プラグインをインストール

以下のコマンドを実施(参考:※6)。

  • インストーラーパッケージをダウンロード
curl -o "session-manager-plugin.deb" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.deb"
  • インストーラーパッケージに関連付けられた署名ファイルをダウンロード
curl -o "session-manager-plugin.deb.sig" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.deb.sig"
  • GPG ツールをインストール
apt update
apt install gnupg2
sudo dpkg -i session-manager-plugin.deb

インストールOK

$ session-manager-plugin --version
1.2.835.0
$

IAMユーザーにSSMへのアクセス権限を付与

以下のカスタマー管理IAMポリシーを作成のうえ、EC2への接続に使用するIAMユーザーへを設定(参考:※7)。

{
    "Version":"2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession",
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ec2:ap-northeast-1:[アカウントID]:instance/[インスタンスID]",
                "arn:aws:ssm:ap-northeast-1:[アカウントID]:document/SSM-SessionManagerRunShell"
            ]
        },
        {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:[アカウントID]:session/${aws:userid}-*"]
       },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:TerminateSession",
                "ssm:ResumeSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:[アカウントID]:session/${aws:userid}-*"
            ]
        }
    ]
}

ローカル環境から接続実施

ローカル環境にて、aws loginを行ってIAMユーザーにログイン。
※aws login実行には、IAMユーザーにAWS管理ポリシー SignInLocalDevelopmentAccessが必要(参考:※8)

そのうえで、以下のコマンドを実行。

aws ssm start-session --target "[接続先EC2インスタンスID]" --region "[接続先リージョン名]"

接続成功。

$ aws ssm start-session --target "****" --region "ap-northeast-1"

Starting session with SessionId: ****
sh-5.2$

引用元および参照元

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?