AWS EC2のAmazon LinuxにSSMでSSH接続する。

SSMを使うと、プライベートネット内のEC2など、通常踏み台サーバが必要なサーバに直接接続できる。 ググればいっぱいでてくるが、自分が実際にやってみた手順を残しておく。

  • 最新のAmazon Linuxを選択してインスタンスを生成する。
  • 生成したインスタンスを以下の通り設定しておく。
    1. インスタンスのセキュリティグループは、HTTPS(ポート443)のインバウンドを許可する。
    2. AmazonSSMManagedInstanceCoreのIAMポリシーをアタッチしたIAM Roleを割り当てる。
  • 接続したいローカルPCの設定を済ませる。
    1. PCにAWS CLIをインストールする。
    2. aws configureを実行してユーザ情報を設定しておく。
    3. Session Manager Plugin をインストールしておく。
  • SSMで、EC2のSSH(ポート22)をローカルの適当なポート(例えば10022)にポートフォワーディングする。
aws ssm start-session --target i-XXXX \
  --document-name AWS-StartPortForwardingSession \
  --parameters 'portNumber=22, localPortNumber=10022'
  • 別のターミナルからSSHを張ればよい。SSMを使わないときと同じだが、SSHにはEC2作成時のキーペアは必要。
ssh -i .ssh/xxx.pem -p <port> ec2-user@localhost

注意としては、WSL2でSSHするには、WSL2でSSMのポートフォワーディングを設定しなければならない。 これはWSLとWindowsのネットワークが異なるためである。

公式 https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-working-with-sessions-start.html