はじめに
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接続用のルールを削除します。これでインターネットにインスタンスを晒すことなく接続する環境が整いました。
以上