Session Managerのポートフォワーディング機能によるRDP接続
前回、「Fleet Managerを使用したEC2接続」をご紹介しましたが、Fleet Managerで見る画面は解像度はあまり高くなく、Windows上で細かい作業をしたいときには向きません。
もしRDP接続ができれば、解像度の調整もできるため作業しやすくなります。
そこで、Session Managerのポートフォワーディング機能を使うことで、ローカル端末の指定ポートで受けた通信をリモート端末のポートにフォワーディング(転送)させることが可能になります。
今回はこの、Session Managerのポートフォワーディング機能によるRDP接続の方法をご紹介します。
以下にイメージ図を掲載します。
AWSの設定
Session Managerでセッションを張るために、IAMユーザに権限を付与します。
今回は、IAMユーザ「testuser01」をIAMグループ「SessionAllowGroup」に所属させ、このグループにポリシーを付与します。
必要なポリシーは以下です。
リソースは要件に応じて制限すると良いでしょう。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ssm:ResumeSession", "ssm:DescribeSessions", "ssm:TerminateSession", "ssm:StartSession" ], "Resource": "*", "Effect": "Allow" } ] }
続いて、このユーザのアクセスキーを作成します。
ローカル端末の準備
以下のドキュメントを参考に、AWS CLIとSSMプラグインをローカル端末にインストールします。
SSMプラグインのインストール
続いて、コマンドプロンプトを開き、アクセスキーとシークレットを設定します。
>aws configure AWS Access Key ID [None]: ****************ABCD AWS Secret Access Key [None]: ****************abcd Default region name [ap-northeast-1]: Default output format [json]:
ポートフォワーディングでRDP接続してみる
コマンドプロンプトでポートフォワードのコマンドを実行します。
ここでは、ローカル端末のポート番号11111をリモート端末の3389に転送します。
>aws ssm start-session --target <インスタンスID> --document-name AWS-StartPortForwardingSession --parameters portNumber=3389,localPortNumber=11111 Starting session with SessionId: testuser01-xxxxxxxxxx Port 11111 opened for sessionId testuser01-xxxxxxxxxx. Waiting for connections...
「Waiting for connections...」と表示されたら、コネクションを待ち受けている状態です。
リモートデスクトップを開き、「localhost:11111」にadministratorで接続してみます。
ちなみに、先ほどのコマンドプロンプトで「Connection accepted for session」と表示され、通信が開始されたことが分かります。
Starting session with SessionId: testuser01-xxxxxxxxxx Port 11111 opened for sessionId testuser01-xxxxxxxxxx. Waiting for connections... Connection accepted for session [testuser01-xxxxxxxxxx]
Administratorのパスワードを入力します。
接続が成功しました。
もちろん、ローカル端末のドライブとも共有が可能です。
まとめ
Session Managerのポートフォワーディング機能によるRDP接続の方法をご紹介しました。
Fleet Managerで十分であれば良いですが、要件によってはリモートデスクトップを使いたいときもあると思います。
Session Managerであれば、プライベートサブネットにあるインスタンスにもRDPで接続でき、さらにIAMによる制御も可能になります。
非常に便利な機能なので、ぜひ活用してみてください。