Windows10上のVirtualBoxにインストールしたUbuntuにRDP接続する

Windows10のHomeエディションを使っている場合には、リモートデスクトップを有効にして外部のホストからRDP接続することができません。ところが、Windows10のVirtualBoxの仮想マシンとしてインストールしたUbuntuデスクトップにRDP接続して使用することはできます。

どれだけ需要があるかわからないのですが、そのための方法をまとめてみたいと思います。

参考【メモ】WSL2上のsshサーバに外部から接続する

VirtualBoxとUbuntuのインストール

既にWindows上にVirtualBoxがインストールされていて、VirtualBoxの仮想マシンとしてUbuntu Desktop 20.04 LTSがインストールされているものとします。

xrdpのインストール

まずは、Ubuntuにxrdpをインストールします。

$ sudo apt install -y xrdp

Ubuntuに固定IPアドレス設定

そのためにVirtualBoxにインストールするUbuntuには、ネットワーク設定でアダプター1は通常のNATに設定して、アダプター2をホストオンリーアダプターにして、Ubuntu側で固定IPアドレスを設定しておきます。ここでは例として、「192.168.56.101」を設定しておきます。このIPアドレスに対して外部から接続することになります。

Windows側にポート転送を設定

外部からWindows側で受け取ったRDPの接続要求を、Ubuntu側にポート転送するように設定します。このためには、管理者モードでPowerShellを起動して以下のコマンドを実行します。

netsh interface portproxy add v4tov4 listenport=3389 connectport=3389 connectaddress=192.168.56.101

ここで、「connectaddress」として先に設定した固定IPアドレスを設定しておきます。これでWindows10で受け取ったRDP用の3389/tcpのパケットが192.168.56.101に転送されるようになります。

実際に使う場合には、Windows10のWSL2で/usr/local/binディレクトリーに例えば”port-forward.sh”としてスクリプトを作成しておきます。

$ sudo vi /usr/local/bin/port-forward.sh
netsh.exe interface portproxy delete v4tov3 listenport=3389
netsh.exe interface portproxy add v4tov4 listenport=3389 connectport=3389 connectaddress=192.168.56.101

exit 0
$ sudo chmod +x /usr/local/bin/port-forward.sh

Windows10側にバッチ・スクリプトを作成

上記、参考に掲載した「【メモ】WSL2上のsshサーバに外部から接続する」の場合と同様に、Windows10側にバッチ・スクリプトを作成します。作成する場所は、%USERPROFILE%として 「port-forward.bat」という名前で作成しています。

WSL –exec bash /usr/local/bin/port-forward.sh

タスクスケジューラの設定

上記、参考に掲載した「【メモ】WSL2上のsshサーバに外部から接続する」の場合と同様に、タスクスケジューラを設定して先に作成したポートフォワード用のスクリプトを呼び出すようにしておきます。具体的な設定内容については、参考ページと同じになります。

RDPクライアントからの接続

設定が完了したら、一旦Windows10側を再起動して設定を反映しておきます。

これで、RDPクライアントから接続したいところですが、Windows10側のVirtualBoxにインストールしたUbuntuを起動していませんので、Windows10にログインしてVirtualBoxを起動してからUbuntu仮想マシンも起動しておきます。

これで外部から接続する準備ができましたからRDPクライアントから接続してみます。

ところが、このままでは画面のように「Authentication Required」として認証が要求されてパスワードを入力する必要があります。

RDPクライアントのAuthentication Required画面

Authentication Required画面の消去

上記の認証画面を消す方法ですが、GitHubにあるマイクロソフトのリポジトリー「microsoft/linux-vm-tools」では次のような方法が使用されています。

https://github.com/microsoft/linux-vm-tools/blob/master/ubuntu/18.04/install.sh#L89

# Configure the policy xrdp session
cat > /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla <<EOF
[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=no
ResultInactive=no
ResultActive=yes
EOF

そこで、上記の内容のファイルを/etc/polkit-1/localauthority/50-local.dディレクトリーに作成します。このlocalauthorityディレクトリーに入るにはroot権限が必要ですからsudo -iしてからファイルを作成しておきます。

準備ができたら一旦Ubuntuを再起動します。

無事に面倒な認証画面が表示されることもなく、RDPクライアントでUbuntuのデスクトップを使用できるようになりました。

Ubuntuデスクトップの画面

実は、何がしたかったかと言うと。普段、Macで作業をしているのですが、事情により同時に起動しているWindows側を使うこともあって、一々画面を切り替えるのが面倒なので(せめて)Ubuntuの画面だけでも同時に表示して使おうとしたのでした。

この記事をシェアする
目次
閉じる