2020/12/10

ngrokでWindowsサーバにリモートデスクトップ接続

先日、社内の検証環境にActive Directory (AD) サーバを構築すべく、仮想マシンとしてWindows Server 2019をインストールしました。私の場合、社内の規定で、検証セグメントはオフィスセグメントとは切り離されているため、このサーバにはVPN経由かつ仮想マシン管理ツールのWebコンソール経由でしかアクセスできません。

Webコンソールでサーバにアクセスすると、動きが遅いので設定などの操作が困難です。マウスカーソルがだいぶ遅れて動き出します。アイコンをクリックするのも一苦労・・・


そこで、構築・設定が完了するまでは、ngrokを使って社外からアクセスしようと思います。以下は、Windowsにおける設定方法となります。
※この方法で重要サーバを外部公開される方は十分セキュリティにご配慮ください。利用後はすぐにngrokプロセスを落として外部からアクセスできないようにする、などです。


ngrokのインストール

ngrokを不自由なく利用するためにはユーザ登録が必要になります。手順は以前の記事である ngrokでSSHサーバを外部公開 をご参照ください。

ユーザ登録後、Windows用のngrokのパッケージをダウンロードします。ダッシュボードにアクセスすると、画面上部にダウンロードボタンが表示されています。


ダウンロード後はWindows標準の圧縮ファイル解凍ソフトで解凍します。解凍したフォルダにはngrok.exeが入っています。


ngrokの設定

ngrokのユーザ登録によってトークンが発行されています。ここでは、そのトークンを設定する手順を記します。

コマンドプロンプトを起動し、ngrok.exeが格納されているフォルダまでカレントディレクトリを移動します。私の場合は、ngrok.exeをAdministratorフォルダ直下に配置しました。ngrokのダッシュボードに移動し、自分のトークンを確認します。そのトークンを登録するために、ngrok.exe authtokenコマンドにトークンを引数として指定して実行します。

C:\Users\Administrator>ngrok.exe authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Authtoken saved to configuration file: C:\Users\Administrator/.ngrok2/ngrok.yml


あとは、リモートデスクトップのポートへ転送するコマンド(ngrok.exe tcp 3389)を実行して完了です。

※あらかじめWindows Server 2019上でリモートデスクトップの有効化、およびファイアウォールで許可をする必要があります。

C:\Users\Administrator>ngrok.exe tcp 3389

ngrok by @inconshreveable                                 (Ctrl+C to quit)

Session Status                online
Account                       xxx (Plan: Free)
Version                       2.3.35
Region                        United States (us)
Web Interface                 http://127.0.0.1:4040
Forwarding                    tcp://4.tcp.ngrok.io:11799 -> localhost:3389

Connections                   ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00


動作確認

では、インターネット経由でリモートデスクトップ接続をしてみましょう。

Windowsのリモートデスクトップ接続アプリを起動し、コンピュータ欄に上記ForwardingのURL(例:4.tcp.ngrok.io:11799)を入力します。


接続ボタンをクリックします。パスワード入力画面が出てこれば成功です。

おお~、リモートデスクトップ接続ができました。これで快適に作業ができます。

コマンドプロンプトを閉じたり、Ctrl + Cでngrokプロセスを停止すると、接続が切れてしまいますのでご注意ください。