AWS上で動くWindowsサーバーへのリモートデスクトップ接続方法

# 概要

AWSのSession Managerという機能を使い、Amazon Elastic Compute Cloud (Amazon EC2)で動くWindowsサーバーにリモートデスクトップ接続して、直接GUIで操作する手順をまとめました。


以下のような構成です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2337599/c80862ff-cf9d-127b-8908-b90991b4f580.png)




# 手順

## 1. Amazon EC2にアタッチするIAMロールの作成

まず、Amazon EC2にアタッチするIAMロールの作成から始めていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2337599/a37f379f-ecf6-4754-5b5f-420e6cb8c512.png)

IAMメニューからロールを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2337599/b1a9de37-6af9-9466-80a0-3f839e9fdb8c.png)

AWSサービスを選択して「次へ」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2337599/478c4ffc-c671-8f11-adc2-dbfc16035e6d.png)

管理ポリシーの「AmazonEC2RoleforSSM 」をアタッチします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2337599/0e58a5ce-11f2-0308-bca8-06ac887ec11c.png)


任意の名前でロールを作成します。今回は「AmazonEC2RoleforSSM」としています。
このロールを、後で立ち上げるAmazon EC2にアタッチします。




## 2. IAMユーザーの作成

リモートデスクトップ接続に用いるAWS CLIに必要なアクセスキーIDとシークレットアクセスキーを取得するため、IAMユーザーの作成を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2337599/fa6c6e08-2875-379c-1a63-67561acacfea.png)

ユーザー名は任意です（今回は「SSMuser」としました）。
アクセスの種類には、プログラムによるアクセスをチェックして次へ進みます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2337599/ac12b14e-0bbc-cc9f-44a2-f68b52b6039d.png)


**AmazonSSMFullAccess**と**AmazonEC2ReadOnlyAccess**を付与して、ユーザーを作成します。
次の画面で出るアクセスキーIDとシークレットアクセスキーは、csvをダウンロードするなどして忘れずに控えておきます。


## 3. Amazon EC2インスタンスの起動
Amazon EC2インスタンスを起動していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2337599/29a9cb6b-228a-b47f-529d-67021b0ac327.png)

今回は「Microsoft Windows Server 2019 Base」を立ち上げます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2337599/83dfc539-612a-fdf4-7ffd-5d9d5beefa06.png)

パブリックIPは有効にして作成します。また、IAMロールには手順1で作成したロールをアタッチします。

割り当てるセキュリティグループは、適宜必要なポートの設定を行います。
セッションマネージャーを介したリモートデスクトップ接続を行いたいだけであれば、インバウンドポートの開放は不要です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2337599/28652868-c00d-1e0c-8836-b43e68f132ff.png)


キーペアは有りで作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2337599/14f7635f-1ee4-ec45-4542-d71a3b994588.png)

インスタンスの立ち上げから4分程度経つと、Windowsパスワードが取得できるようになります。
インスタンス一覧画面の **アクション→セキュリティ→Windowsパスワードを取得** を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2337599/05f81820-9e60-a777-cf37-aeba30f3dfea.png)

インスタンスのキーペアを貼り付けると、パスワードを取得できるので、これを控えておきます。

## 4. ツールのインストール

接続のためにツールをインストールします。
ひとつめは、[AWS コマンドインターフェイス（CLI）](https://aws.amazon.com/jp/cli/)です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2337599/da648794-3797-dc17-48ca-2427ef870caa.png)

つづけて、[セッションマネージャー用のプラグイン](https://s3.amazonaws.com/session-manager-downloads/plugin/latest/windows/SessionManagerPluginSetup.exe)もインストールします。



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2337599/25b2bb9b-ac9b-7727-339a-f528dbbae591.png)

インストールできたら準備完了です。

## 5.接続


Powershellを立ち上げ、AWS CLIに、アクセスキーIDとシークレットアクセスキーを設定します。
このコマンドは初回のみ必要です。


```java:アクセスキーIDとシークレットアクセスキーの設定
PS C:\> 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
```

次に、以下のように入力します。

```java:インスタンスへのセッション確立
PS C:\> aws ssm start-session --target <インスタンスid> --document-name AWS-StartPortForwardingSession --parameters "portNumber=3389, localPortNumber=13389"
Starting session with SessionId: username-xxxxxxxxx
Port 13389 opened for sessionId username-xxxxxxxxx.
Connection accepted for session username-xxxxxxxxx.
```

これで、Amazon EC2とのセッションが確立されます。



![224e25b0-ff2c-11eb-b0bb-061b6180f9cc.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2337599/cdbeae5c-dae5-82aa-72e0-53cffe3a0b0c.png)

最後に、リモートデスクトップを立ち上げて**Localhost:13389**に接続します。
資格情報を求められるので、IDは**Administrator**、パスワードは手順3で取得して控えたWindowsパスワードを入力すると、接続することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2337599/75eb8316-063e-d95b-1bd0-b778b6de68cf.png)

無料利用枠のt2microなので、お世辞にも動作は速いとはいえませんが、Amazon EC2にリモートデスクトップ接続することができました。インターネットも問題なく使えます！


# 注意点
リモートデスクトップを閉じるだけではセッションは続いてしまいますので、コンソールから終了する必要がある点に注意しましょう。

リモートデスクトップの利用終了後、ウインドウを閉じるだけだとセッションは終了しません。 

PowerShellで**ctrl + c** を入力し、待ち状態になっているaws sessionsmanager start-sessionを終了後、以下のコマンドを入力して確実にセッションを終了させて下さい。

```java:セッションの終了コマンド
PS C:\>aws ssm terminate-session --session-id <セッションID>
```



***
記載されている会社名、製品名、サービス名、ロゴ等は各社の商標または登録商標です。