【初心者】パブリックEC2(Windows)に接続する3つの方法

もくじ

書くこと

パブリックサブネットに存在するWindowsのEC2インスタンスに、RDP接続するときの方法を記載します。

ここでは3つのRDP接続方法を取り上げて、それぞれについて見ていきたいと思います。

以下の方法があると考えます。

  1. Systems Managerのフリートマネージャー(Fleet Manager)でRDP接続する。(新しいやり方)
  2. Systems ManagerでポートフォワードしてRDPクライアントで接続する。(ちょっと古いやり方)
  3. 3389ポートを開放してRDPクライアントで接続する。(古いやり方)

❶が一番セキュアで一番簡単な方法となります。なぜなら、WindowsにRDPポート(3389)を開放せずに、AWSコンソールからブラウザですぐにアクセスできるからです。

❷はフリートマネージャーほど簡単ではありませんが、Windowsに3389ポートを開放しなくてよいことは同じです。しかし、ポートフォワードを実行する手間があります。また、アクセスはRDPクライアントを使用します。

❸はWindowsに3389ポートの穴を開ける必要があります。その上でRDPクライアントで接続する、一番古いやり方となります。AWSの過去を見ることも大切だと感じたので、今回書いてみることにしました。

フリートマネージャー

フリートマネージャーでの接続の仕方から見ていきます。

構成図

ユーザーはWEBブラウザでアクセスし、Systems Manager経由でEC2にアクセスします。

インスタンスプロファイル

フリートマネージャーはSystems Managerの機能の一部なので、EC2がSystems Managerを使用できる必要があります。

そのため、AmazonSSMManagedInstanceCoreのポリシーがアタッチされたIAMロールを、インスタンスプロファイルとしてEC2に付与しておく必要があります。

ここでは、「EC2InstanceProfile」という名前でロールを作成しました。

EC2作成

作成したインスタンスプロファイルをアタッチして、WindowsのEC2インスタンスを作成しました。

以下はセキュリティグループの画面ですが、インバウンドでは何も許可をしていません。

アウトバウンドは443ポートのみ全宛先に許可しています。これは、Systems Managerに対して443通信をするからです。

接続してみる

作成したEC2にチェックを入れて、「接続」ボタンをクリックします。

「RDPクライアント」タブをクリックして、「Fleet Managerを使用して接続する」にチェックを入れます。

「Fleet Manager Remote Desktop」ボタンをクリックします。

今回はキーペアで接続します。(ユーザー名とパスワードでも接続できます。パスワード取得にはキーペアが必要になります)

EC2を作成したときに作ったキーペアを指定します。

「Connect」ボタンを押します。

接続することができました。

Systems Managerポートフォワード

次はSystems Managerのポートフォワードを使用して、WindowsのEC2にRDP接続してみたいと思います。

構成図

ユーザーはRDPクライアントでlocalhost:任意のポートを指定し、接続します。ポートフォワードされてEC2に接続されます。

前提

Systems Managerでポートフォワードする際も、AmazonSSMManagedInstanceCoreポリシーがアタッチされたEC2インスタンスプロファイルが必要です。

また、セキュリティグループのルールは変更していません。インバウンドでは何も許可しておらず、443のアウトバウンドのみ全宛先に許可しています。

AWS CLIとSession Managerプラグインのインストール

ポートフォワードをするために、ローカルの作業端末にAWS CLIとSession Managerプラグインが必要になります。

以下を参照してインストールしていただければと思います。

AWS CLI の最新バージョンをインストールまたは更新します。

AWS CLI 用の Session Manager プラグインをインストールする

ポートフォワード実行

以下のコマンドでは、ローカルの3389ポートをEC2の3389ポートにフォワーディングしています。

% aws ssm start-session --target i-XXXXXXXXXXXXXXXXX \
        --document-name AWS-StartPortForwardingSession \
        --parameters portNumber=3389,localPortNumber=3389

Starting session with SessionId: Atsushi-090933956fa2debed
Port 3389 opened for sessionId Atsushi-090933956fa2debed.
Waiting for connections...

Administratorのパスワード取得

接続にはパスワードが必要になるため、AWSコンソールで取得します。

先ほどフリートマネージャーで接続を行ったときの画面の、「RDPクライアント」タブをクリックします。

「パスワードを取得」ボタンをクリックします。

キーペアをアップロードして、「パスワードを復号化」をクリックします。

パスワードが復号されて表示されるので、メモ帳などにコピーします。

接続してみる

Macを使っているので、ここでは「Microsoft Remote Desktop」というアプリで接続します。

接続先をlocalhostとして作成します。(localhost:3389がEC2インスタンスの3389ポートにフォワードされるため)

  • Microsoft Remote Desktopアプリはデフォルトで3389ポートを使用します。

接続先を追加して接続を試みると、UsernameとPasswordを聞かれます。

UsernameはAdministratorで、Passwordは先ほど復号したパスワードです。

接続できました。

ポートフォワードを行っているコンソールを見てみると、「Connection accepted for session…」という表示が現れています。

% aws ssm start-session --target i-XXXXXXXXXXXXXXXXX \
        --document-name AWS-StartPortForwardingSession \
        --parameters portNumber=3389,localPortNumber=3389

Starting session with SessionId: Atsushi-090933956fa2debed
Port 3389 opened for sessionId Atsushi-090933956fa2debed.
Waiting for connections...

Connection accepted for session [Atsushi-090933956fa2debed]

3389ポート開放してRDP接続

最後は、セキュリティグループに3389ポートを開放してRDP接続するやり方です。

構成図

Systems Managerがいなくなり、ユーザーからEC2に直接アクセスするので、EC2のセキュリティグループに3389ポートを開ける必要があります。

セキュリティグループに3389を許可

EC2インスタンスに紐付いているセキュリティグループのルールを変更します。

インバウンドに3389ポートを許可しました。

また、アウトバウンドの443ポート許可は削除しました。(Systems Managerを使用しないので必要なくなった)

接続してみる

EC2インスタンスに接続する画面から、同じく「RDPクライアント」タブを選択します。

そして、「リモートデスクトップファイルのダウンロード」をクリックします。

ダウンロードしたRDPファイルをダブルクリックします。

UsernameとPasswordが聞かれます。

ポートフォワードのときに確認した、Administratorのパスワードを入力します。

接続できました。

まとめ

簡単にまとめてみます。

  • フリートマネージャーの場合
    • セキュリティグループのインバウンドに3389ポートを開放しなくて良い。
    • セキュリティグループのアウトバウンドに443ポートの開放は必要。
    • RDPクライアントも不要。ブラウザでアクセスできる。
  • Systems Managerのポートフォワード
    • セキュリティグループのインバウンドに3389ポートを開放しなくて良い。
    • セキュリティグループのアウトバウンドに443ポートの開放は必要。
    • RDPクライアントが必要。
  • 3389ポートを開放してRDP接続
    • セキュリティグループのインバウンドに3389ポートの開放が必要。
    • セキュリティグループのアウトバウンドにポート開放は不要。
    • RDPクライアントが必要。

フリートマネージャーかSystems Managerのポートフォワードの2択なのではないかと個人的には感じました。

要望が無いならフリートマネージャー。ブラウザでのアクセスに抵抗があるならポートフォワードかと思いました。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

CAPTCHA

もくじ
閉じる