1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WindowsからMFA + aws cli + Session Managerを駆使してSSH接続(or ポートフォワード)

Last updated at Posted at 2022-10-04

はじめに

バッチファイル内でコマンドの実行結果を複数の変数に取りだし利用する - Qiita
https://qiita.com/SECUAL_masa/items/a9a17e78e935ddb1be47

上記の記事の最後でも書いたが、実際にやりたかったことを記事にして公開する。

やりたかったこと

WindowsからAWSのSession Managerを利用して目的のインスタンスにSSH接続。

注意事項

Windowsでaws cliを環境変数(AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY/AWS_DEFAULT_REGION)を駆使して利用されている場合は既存の設定がクリアされてしまうので注意すること。

コード

コード
@echo off

set AWS_ACCESS_KEY_ID=
set AWS_SECRET_ACCESS_KEY=
set AWS_SESSION_TOKEN=
set AWS_DEFAULT_REGION=ap-northeast-1

set USERNAME="username"

set AUTHCODE=
set /p AUTHCODE=Please input authentication code:

for /f "tokens=1-5 usebackq" %%i in (`aws sts get-session-token --serial-number "arn:aws:iam::nnnnnnnnnnnn:mfa/%USERNAME%" --output text --token-code "%AUTHCODE%"`) do (
    @set AWS_ACCESS_KEY_ID=%%j
    @set AWS_SECRET_ACCESS_KEY=%%l
    @set AWS_SESSION_TOKEN=%%m
)

aws ssm start-session --target i-xxxxxxxxxxxxxxxxx

set AWS_ACCESS_KEY_ID=
set AWS_SECRET_ACCESS_KEY=
set AWS_SESSION_TOKEN=
set AWS_DEFAULT_REGION=ap-northeast-1

ピックアップ

もうこの記事で書くことはあまりないけど以下だけ。

環境変数の初期化とクリア

set AWS_ACCESS_KEY_ID=
set AWS_SECRET_ACCESS_KEY=
set AWS_SESSION_TOKEN=
set AWS_DEFAULT_REGION=ap-northeast-1

不本意なID/KEYで接続いってもいけないので初期化して、最後に使い終わったらクリアのために。

Session Manager のコマンド例

上記コードにある

aws ssm start-session --target i-xxxxxxxxxxxxxxxxx

の部分。これを↓に変更するとポートフォワードが可能になる。

日本語のサイトにあるコマンド構文だと"localPortNumber"でエラーになったので以下の構文にする必要がある。(日本語サイトから言語を英語に切り替えた後に表示されるページの構文でもエラーになったので注意)

HTTP

aws ssm start-session --target i-xxxxxxxxxxxxxxxxx --document-name AWS-StartPortForwardingSession --parameters "portNumber"=["80"],"localPortNumber"=["8080"]

SSH

aws ssm start-session --target i-xxxxxxxxxxxxxxxxx --document-name AWS-StartPortForwardingSession --parameters "portNumber"=["22"],"localPortNumber"=["8022"]

以下の記事にもあるが、私はTera Term使いなのでSession Managerを駆使しつついつものTera Termが使えるので便利。(ファイル転送もD&D!)

Tera Termの便利な機能(自動ログ採取、ログ表示、ファイル送受信、接続先のリスト表示、同時操作) - Qiita
https://qiita.com/SECUAL_masa/items/afed756a05c893a3651e

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?