目次

セッションマネージャ接続-Linux

概要(こんな時に有効です)

・パブリックサブネットでSSHのポートを開放しないでSSH接続したい場合
・プライベートサブネットに配置していて、外向けにSSHのポート開放ができない場合

■構成イメージ

環境準備サマリ

条件は以下の通り
①対象インスタンスにSSMAgentがインストールされていること
②対象インスタンスのロールに「AmazonSSMManagedInstanceCore」がアタッチされていること
③対象インスタンスがセッションマネージャで必要なエンドポイントと疎通可能なこと
④接続ユーザから対象インスタンスに接続可能なポリシーがアタッチされていること
⑤接続するクライアントPCにAWSCLI、SessionManagerPluginがセットアップされていること

AWS側の準備

SSMAgentのインストール

①対象インスタンスにSSMAgentのインストールします。
2016年11月以降のAMIにはデフォルトでSSMAgentがインストールされています。
もしインストールされていない場合は、下記URLを参考にインストールします。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/install-ssm-agent-ec2-linux/

ロールのアタッチ

① [AmazonSSMManagedInstanceCore]ポリシーをアタッチしたIAMロールを作成します。
② 作成したロールを、対象インスタンスにアタッチします。

IAMユーザの作成

①IAMユーザを作成します。作成済みの場合は②のみ実行します。
②IAMユーザには以下のポリシーをアタッチします。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:DescribeSessions",
                "ssm:GetConnectionStatus",
                "ssm:DescribeInstanceProperties",
                "ec2:DescribeInstances"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetDocument"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:TerminateSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:username}-*"
            ]
        }
    ]
}

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:TerminateSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:username}-*"
            ]
        }
    ]
}

エンドポイントとの疎通確認

■対象インスタンスからインターネットに接続できる場合。
設定不要です。

■対象インスタンスからインターネットに接続できない場合。
以下のVPCエンドポイントを作成して接続します。
com.amazonaws.region.ssm
com.amazonaws.region.ec2messages
com.amazonaws.region.ssmmessages
com.amazonaws.region.s3

クライアント側の準備

AWSCLI、SessionManagerPluginのインストール

①クライアントPCにAWSCLI、SessionManagerPluginをインストールします。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2-windows.html
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html

AWSCLIでプロファイルの設定をします。

①[AWS Configure]コマンドで、IAMユーザで払いだしたアクセスキーとシークレットキーの登録をします。

https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/getting-started-restrict-access-examples.html#restrict-access-example-full-access

接続確認①

AWSコンソールから接続

①AWSコンソールから[AWS Systems Manager]-[セッションマネージャ]を開きます。
以下省略

接続確認②

セッション開始コマンドの実行

①Powershellを起動し、以下の形式でコマンドを実行します。

aws ssm start-session --target [instance-id]

②Powershell内で、対象インスタンスにSSH接続が開始されます。