EC2 Instance Connect Endpointを用いて、パブリックIPがないWindows Serverへ接続!
はじめに
AWSに構築したバブリックIPがないWindows Serverを操作したい思い、実装できるのか調べました。
タイトルにあるEC2 Instance Connect Endpointを用いれば実装ができます!
誰かの一助と著者用の備忘録として紹介させていただきます。
EC2 Instance Connect Endpointとは
そもそも、EC2 Instance Connect Endpointをご存知ではない方向けにAWS公式より引用紹介します。
EC2 インスタンスConnect エンドポイントを使用すると、インスタンスにパブリック IPv4 アドレスがなくても、SSH または RDP 経由でインスタンスに接続できます。
EC2 Instance Connect Endpoint を使用した、パブリック IPv4 アドレスを必要としないインスタンスへの接続
上記を言い換えると、プライベート内のEC2 (Linux, Windows等)へ接続機能を実装する部品とわかります。
接続準備
接続準備として、下記3点を行っていきます。
・EC2 Instance Connect Endpointの作成
・プライベートサブネットに属するEC2(Windows Server 2022)構築
・AWS CLIの最新版インストール
EC2 Instance Connect Endpointの作成
まずは、エンドポイントに紐づけるSGを作成します。
今回はWindows Serverのため、「タイプ:RDP」、「ソース:マイIP」で作成します。
SG作成後、VPCコンソール>エンドポイント>[エンドポイント作成]
上で作成したSGで、プライベートサブネット内にEC2 Instance Connect Endpoint作成します。
プライベートサブネットに属するEC2(Windows Server 2022)構築
次に、EC2コンソール>インスタンス>[インスタンスを起動]
AMIはWindows Server 2022を選択します。
あとは、キーペアと正しいネットワーク設定をします。
今回の場合では、プライベートサブネット内にWindows Serverを構築します。
また、EC2のSG設定は先ほど作成したSGをソースとしてRDP許可します。
参考:SGのルールイメージ
残りは基本デフォルトで構築しました。バブリックIPがないEC2が立ち上がりました!
AWS CLIの最新版インストール
EC2 Instance Connect Endpoint 経由でRDP接続するには、インスタンスがあるVPCへのプライベートトンネル確立が必要です。
その際に、下記のAWS CLIコマンド実行しますがAWS CLIのバージョンは「Ver.2.12.0」以上が対応してます。
aws ec2-instance-connect open-tunnel
著者のバージョンは下記の通り、満たしていないためAWS公式を基に、インストールしました。
最新版インストール前
最新版インストール後の比較
# 参考コマンド
PS C:\> aws --version
aws-cli/2.9.1 Python/3.9.11 Windows/10 exe/AMD64 prompt/off
PS C:\> msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi
PS C:\> aws --version
aws-cli/2.13.28 Python/3.11.6 Windows/10 exe/AMD64 prompt/off
接続確認
接続準備が終えたため、プライベートトンネルを確立し、RDP接続試してみます!
プライベートトンネルを確立
aws ec2-instance-connect open tunnelを実行し、下記のように「Listening for connections on port 65000.」表示されれば確立です。
もし失敗した場合は、SG周り、IAM周り等確認しましょう。
# 参考コマンド
aws ec2-instance-connect open-tunnel --instance-id "対象インスタンスID" --remote-port 3389 --local-port "ローカルの空きポート"
RDP接続
上でローカルポートを指定した値を、コンピュータ名に入力します。
後はパスワードを入力して接続です。無事にRDP接続することができました。
Administratorユーザで、該当のプライベートIPです。
因みに、RDP接続と終了するとPowershellに下記のような表示がされます。
まとめ
EC2 Instance Connect Endpointを作成するのは初めてで、AWS公式とClassmethod様のブログに助けてもらいました。この場を借りて、ありがとうございます!
何とか目的である「バブリックIPがないWindows Serverへ接続」ができて良かったです。
この記事が誰かの役に立てば幸いです!
参照
EC2 Instance Connect Endpoint を使用した、パブリック IPv4 アドレスを必要としないインスタンスへの接続
EC2 Instance Connect Endpoint経由でWindows ServerにRDP接続してみた