LoginSignup
40
53

More than 3 years have passed since last update.

図解で、もう踏み台要らずAWS SSM経由Windowsサーバーにリモートデスクトップ接続

Last updated at Posted at 2019-11-09

AWSなら、踏み台サーバー無しでWindowsサーバにRDP接続できるようになった。便利だけど、設定方法をすぐ忘れちゃうのでメモ。

今まで:

Linux 踏み台サーバーを経由して、AWS Windowsサーバーにリモートデスクトップ接続していた(RDP over SSH)。

  • メリット:使い慣れている。SSH鍵を所有する人だけがOSにログインできた。
  • デメリット:会社のHTTP/HTTPSプロキシ経由では、RDPがブロックされて接続できない。

これから:

AWS Systems Manager (SSM)のセッションマネージャー経由でEC2 Windowsサーバーにリモートデスクトップ接続したい。

  • メリット:会社のHTTP/HTTPSプロキシ経由でも、クラウドのサーバーOSにSSHクライアントやRD接続でログインできるかも。
  • デメリット:AzureやIBM Cloudなどの他クラウドと異なるアクセス方法を運用することになる。

システム構成図

PCの[AWS CLI]とAWS管理ポータルの[SSM]を経由して、PCからWindowsサーバーにRD接続する。言い換えるとPCのWEBブラウザと同じhttps(443)でWindowsサーバーにリモートデスクトップ接続します。この時、VPCのセキュリティグループは全てのInboundを拒否しておいて構いません。
下図の赤丸番号ごとに手順を説明しています「図①の手順が(1)」。

image.png

(1) AWSコンソールでSSMを準備する

AWS管理コンソールのSystems Manager を有効にしたら、セッションマネージャーでRD接続するVMを選択する。クイックセットアップでまとめて設定できる。これ、設定してから[保留中][成功]になるまで数十分かかるので、別の作業をしてから戻った方がいいみたいです。

image.png

対象のVM(EC2)に、IAMロール(AmazonSSMRoleForInstancesQuickSetup)を割り当てする
image.png

(2) EC2にSSMエージェントをインストールする

EC2をデプロイすると、AWSデフォルトでSSMエージェントがインストール済み。

  • 対象:Windows Server 2016, 2019のAMIから作成した場合。
  • 条件:System Manager エージェントのバージョン 2.3.672.0以上
  •    Session Manager プラグインのバージョン 1.1.26.0以上

(3) 保守PC側の準備(AWS CLIをインストール)

AWS CLIをインストールして、"aws configure"を実行して以下のユーザ情報をPCに登録しておく
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-windows.html
image.png

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

(4) 保守PC側の準備(SSM用のプラグインを追加する)

インストーラーをダウンロードして実行
https://s3.amazonaws.com/session-manager-downloads/plugin/latest/windows/SessionManagerPluginSetup.exe

実行した時、ディレクトリの指定ができないので、自分でAWSコマンドと同じフォルダに複写するか、PATHを指定すること。

(5) 保守PC側でポートフォワードを実行する

PowerShellでコマンドを実行する。--targetのi-xxxxは対象のインスタンスIDを書く。"\"は¥マークに置き換えてください。

PS C:\> aws ssm start-session --target i-0exxxxxxx4f --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.

プロキシ経由でインターネットにアクセスする場合

もしも"Starting session with.."に続く"port 13389 opend"が表示されず、ローカルポートがListtenされない場合はプロキシ経由の設定が必要になります。

https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/sysman-proxy-with-ssm-agent.html

▽プロキシ名とポート番号は入れ替えてください

PS C:\> set https_proxy=hoge.company.co.jp:port
PS C:\> aws ssm start-session --target i-0exxxxxxx4f --document-name AWS-StartPortForwardingSession --parameters "portNumber=3389, localPortNumber=13389"

恒久的に使うなら下記ファイルに追加する
/etc/yum.conf

[main]
proxy=https://[proxy]:[port]

(6) 保守PC側でリモートデスクトップ接続を実行

リモートデスクトップの接続先は自分PCのポート「localhost:13389」を指定する。OSログインのIDとパスワードは、AWS管理ポータルで取得するやつ。Windows標準の"リモートデスクトップ接続"そのものなので、[Ctrl+C][Ctrl+V]も実行可能(PCからサーバーに、クリップボード経由でファイルをアップロードできた)。
image.png

その他

40
53
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
40
53