【SSM】WSLからAWS Systems Managerを利用してEC2にSSH接続しよう

記事タイトルとURLをコピーする

こんにちは。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がマネージドインスタンスになったはいいものの、ここからどうすれば接続できるんだろう…」という場面で参考になれば幸いです。

上山結生(執筆記事の一覧)

新卒研修中

タピオカが好きです。