Amazon Session ManagerでEC2インスタンスへsshログインする
Amazon Session Manager で プライベートサブネット上にあるEC2インスタンスへsshログインする
AmazonEC2インスタンスにインタネットからsshしたい。Publicサブネットに踏み台を置く例もあるんですが、session managerでsshログインさせたほうが良いみたいです。
Amazonのドキュメントもあるんですが、何ぶんわかりにくいのでstep by stepでまとめます。
IAMロールを作成する
IAMコンソールから、ロール→ロールを作成。
「一般的なユースケース」でEC2を選択して、「次のステップ」をクリック。
ポリシーのフィルタに AmazonSSMManagedInstance と入力、下にでてきた同ロールにチェックをいれて「次のステップ」をクリック
タグはお好み。確認をクリック。ロール名は適当に。EC2SSMとかでも。
NATゲートウェイを設定
プライベートサブネットからインタネット(実際にはSession Manager)にでられるように、パブリックサブネット上にNATゲートウェイを設置。
プライベートサブネットのデフォルトルータにNATゲートウェイを設定。
sshログインしたい端末にaws CLIをインストール
インストール手順はカンタンでいろんなところで紹介されているので省略。
aws configで認証を通す必要ありますが、ここで使うIAMユーザにはSSMを利用できるだけのロールを割り当てる必要があります。
sshのconfigを編集する
SSM経由でログインするときは、EC2のインスタンスIDを指定します。configへ以下。
host i-* mi-* ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
awsのssmでプロクシをかけるみたいです。
実際にsshでログインしてみる
$ ssh -i mykey.pem ec2-user@i-0fe7d76ae74dbab06 Last login: Tue Nov 30 08:02:49 2021 from localhost __| __|_ ) _| ( / Amazon Linux 2 AMI ___|\___|___| https://aws.amazon.com/amazon-linux-2/ [ec2-user@ip-10-0-16-44 ~]$