Session Manager plugin で Private Subnet の EC2 に踏み台なしで接続する。環境は macOS。
前提
- IAM ポリシー"AmazonSSMManagedInstanceCore"を付与した IAM ロールが EC2 にアタッチされていること。
- 以下の VPC エンドポイントが作成されていること。
- com.amazonaws.region.ssm
- com.amazonaws.region.ec2messages
- com.amazonaws.region.ssmmessages
- VPC エンドポイントのにアタッチするセキュリティグループはEC2にアタッチしているセキュリティグループからインバウンド https が許可されていること。
- EC2のセキュリティグループはアウトバウンドで https が許可されていること。
インストール・設定
- macOS に Session Manager plugin をインストール
$ curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac/sessionmanager-bundle.zip" -o "sessionmanager-bundle.zip" $ unzip sessionmanager-bundle.zip $ sudo ./sessionmanager-bundle/install -i /usr/local/sessionmanagerplugin -b /usr/local/bin/session-manager-plugin
- ~/.ssh/config に以下を追記。
# SSH over Session Manager host i-* mi-* ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
接続する
- EC2 にセッションマネージャーで接続する。
$ ssh ec2-user@i-049***********b89 -i ~/.ssh/mykey.pem
補足
接続先の EC2 のリストをサクッと確認できるようにする。
$ git clone https://github.com/yoheia/aws-cli-aux.git
$ chmod u+x aws-cli-aux/bin/*
- ~/.bash_profile に以下を追記。
export PATH=$PATH:~/Documents/src/github/aws-cli-aux/bin
- ~/.bash_profile をロード。
$ source ~/.bash_profile
- EC2 を一覧表示する。
$ ec2ls ------------------------------------------------------------------------------ | DescribeInstances | +---------------+-----------------------+-------+----------------+-----------+ | GlobalIP | InstanceId | Name | PrivateIp | State | +---------------+-----------------------+-------+----------------+-----------+ | 13.***.***.60| i-i-049***********b89 | None | 172.**.**.228 | running | +---------------+-----------------------+-------+----------------+-----------+
- EC2 にセッションマネージャーで接続する。
$ ssh ec2-user@i-049***********b89 -i ~/.ssh/mykey.pem