最終更新日付: 2021年7月15日

以下、AWSセッションマネージャーを利用してWindowsへGUI接続(RDP接続)するための手順を説明します。

レジュメ
Windows GUIでセッションマネージャーを利用するための環境準備
セッションマネージャーは具体的には、SSM(AW Systems Manager)の機能を利用しています。
環境・前提条件
- AWSコンソールにアクセス出来る社内パソコン
- 社内パソコンからはインターネットにアクセス出来るのはhttp・httpsのみ(RDP接続は出来ない)
- 社内パソコンはWindows10
- AWS上のEC2はWindows Server 2016
上記の環境で、AWS上のWindows Server 2016にセッションマネージャーでGUI接続(RDP接続)します。
AWSコンソール上で準備すること
【手順1】RDP接続したいWindowsのEC2インスタンスに対し、IAMロール「AmazonSSMRoleForInstancesQuickSetup」を割り当てます。

【手順2】社内パソコンからリモートでコントロールするためのAWSアクセスキー・シークレットキーを発行します。
AWS上のEC2上で準備すること
【手順3】Windows EC2上に、最新のSSMエージェントがインストールされていることを確認します。新しいEC2ならば、デフォルトでインストールされていると思います。

社内パソコンに準備すること
【手順4】社内パソコンに「AWS CLI」をインストールします。

ダウンロード先は、以下です。

Windows での AWS CLI バージョン 1 のインストール、更新、アンインストール - AWS Command Line Interface
【手順5】社内パソコンに「セッションマネージャープラグイン」をインストールします。

ダウンロード先は、以下です。

(Optional) Install the Session Manager Plugin for the AWS CLI - AWS Systems Manager
【手順6】社内パソコンの「AWS CLI」にアクセスキーとシークレットキーを設定する。

aws configure
AWS Access Key ID [None]: xxxxxxxxxxxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]: JSON
これで、セッションマネージャーでWindows GUI接続(RDP接続)する環境準備が整いました。
社内パソコンからWindows GUIセッションマネージャーで実際EC2に接続してみる
社内にProxyがある場合
実際に、社内パソコンからEC2にセッションマネージャーで接続してみます。
社内にProxyがある場合は、以下のコマンドでpower shellにProxyセットします。
$env:https_proxy="http;//xxx.xxx.xxx:port"
Proxyが無い場合は、不要です。
SSL-VPNのトンネルを張る(ポートフォワーディング)

まず、ポートフォワーディング方式でSSL-VPNのトンネルを張ります。
aws ssm start-session --target i-0exxxxxxxxx --document-name AWS-StartPortForwardingSession --parameters "portNumber=3389, localPortNumber=13389"
上記は、インスタンスID「i-0exxxxxxxxx」のEC2への3389番ポート(RDP)接続を、ローカル(社内パソコン)の13389番ポートにポートマッピングするというコマンドになります。
トンネルの中をRDP接続する

ポートフォワーディングでマッピングされたローカルの転送ポートに、RDP接続することにより、EC2へ安全にRDP接続できます。
リモートデスクトップ接続を終えたら、上記PowerShellのトンネルコマンドを終了(ウィンドウの×ボタンや、Ctrl+C)させ、トンネルをふさぎ終了します。