おれさまラボ

実際に手を動かして理解を深めるブログ。

AWS セッションマネージャを使ってパブリックサブネットのEC2インスタンスに接続する

はじめに

AWS CLIからSystems Manager(SSM)のセッションマネージャーを使ってEC2インスタンスに接続してみます。

何が嬉しいのか

鍵認証がいらなくなります。

また、セキュリティグループからSSH接続用のルールを消し去ることができます。

Session Manager Pluginの導入

以下サイトを参考にしてSession Manager Pluginをインストールしていきます。Windows環境です。

参考:(オプション) AWS CLI 用の Session Manager Plugin をインストールする - AWS Systems Manager

最新版のインストーラこちらからダウンロードできます。

ライセンスに同意して Install を押下します。このあとWindowsのユーザーアカウント制御(UAC)が表示されるので許可してください。

インストールの完了を待ちます。

Installation Sccessfully Completed と表示されれば完了です。

PowerShellでインストールフォルダへ移動、実行ファイルに --version オプションをつけて実行します。バージョン情報が返ってくれば成功です。

> cd "C:\Program Files\Amazon\SessionManagerPlugin\bin"
> .\session-manager-plugin.exe --version
1.1.54.0

ただし、この状態ではどうもPATHが通っていないらしく、AWS CLIから呼び出すことができません。実際、セッションマネージャーを使ってインスタンスに接続しようとしても失敗します。

> aws ssm start-session --target i-083914328b2d1c5c9

SessionManagerPlugin is not found. Please refer to SessionManager Documentation here: http://docs.aws.amazon.com/console/systems-manager/session-manager-plugin-not-found

AWSのドキュメントを参考にPATHを通します。

参考:Session Manager のトラブルシューティング - AWS Systems Manager

コントロールパネルの 環境変数の編集 を開きます。

[Path] を選択して [編集] ボタンを押下します。

新規 を押下して以下のパスを入力します。入力後、OKを押下して環境変数の設定を終えます。

  • 64 ビットコンピュータの場合: C:\Program Files\Amazon\SessionManagerPlugin\bin\
  • 32 ビットコンピュータの場合: C:\Program Files (x86)\Amazon\SessionManagerPlugin\bin\

セッションマネージャーを使った接続

PowerShellを再起動して、セッションマネージャーでEC2インスタンスへの接続を試みます。

> aws ssm start-session --target i-xxxxxxxxxxxxxxxxx

Starting session with SessionId: user-xxxxxxxxxxxxxxxxx
sh-4.2$ bash
[ssm-user@ip-10-255-1-139 /]$

最後にセキュリティグループのSSH接続用のルールを削除します。これでインターネットにインスタンスを晒すことなく接続する環境が整いました。

以上