こんにちは。CS2課でOJTをしている上山と申します。
AWS Systems Manager(以下、SSM)を使えば踏み台サーバーなしでプライベートな環境にあるEC2に接続できると聞いたので、やってみました。
設定条件
対象のEC2インスタンスがSSMを使用できる状態とします。
設定にあたっては反町さんのブログを参考にしました。 今回のブログはWSLの設定~SSH接続を扱いますので、VPC、IAMの設定についてはぜひこちらのブログもご参照ください。 blog.serverworks.co.jp
手順は以下の通りです。
1. ローカル端末にAWS CLI 用の Session Manager plugin をインストールする
AWSユーザーガイドの手順に従って、WSLに Session Manager plugin をインストールします。
Ubuntu に Session Manager プラグインをインストールする - AWS Systems Manager
2.鍵のファイルを作成する
/home/[username]/.ssh
の下に任意のファイルを作成し、秘密鍵を貼り付けます。
鍵ファイルの内容は以下のようになります。
-----BEGIN RSA PRIVATE KEY----- (略) -----END RSA PRIVATE KEY-----
以下のコマンドで鍵ファイルの権限を変更します。
chmod 400 ~/.ssh/[鍵ファイル名]
3. Configファイルを編集する
/home/[username]/.ssh
の下のconfigファイルに以下設定を追記します。
*存在しない場合は作成してください。
host ec2-user HostName [インスタンスid] Port 22 User ec2-user IdentityFile ~/.ssh/[鍵ファイル名] ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
4. SSH接続する
WSLを立ち上げて、次のコマンドを入力します。
$ ssh ec2-user
以下のような質問文が出たらyesと入力します。
Are you sure you want to continue connecting (yes/no/[fingerprint])?
接続できた場合以下のような画面が表示されます。
接続できました
よかったです。 「EC2がマネージドインスタンスになったはいいものの、ここからどうすれば接続できるんだろう…」という場面で参考になれば幸いです。