ablog

不器用で落着きのない技術者のメモ

Session Manager plugin で Private Subnet の EC2 に踏み台なしで接続する

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 のリストをサクッと確認できるようにする。

  • aws-cli-aux tools を git clone。
$ 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