WSLでリモートマシンにx11フォワーディング接続をさせる

最近はあまり使うこともないのだけど、Oracleのインストールとかをする際にsshでリモートサーバにx11フォワーディング接続をしてGUIを転送させるようなことをしていた。 で、その際はTeraterm + Xmingの組み合わせで対応することが多かったのだが、それをWSLを使ってやってみることにする。

なお、WSLで利用するOSはUbuntu 18.04LTSとし、リモートマシンへの設定はここでは省略する。

1. 『VcXsrv Windows X Server』のインストールをする

Teratermと組み合わせて利用するX Window ServerとしてはXmingがよく使われていたのだが、WSLでは『VcXsrv Windows X Server』がよく使われているらしい。 リンク先からインストーラーをダウンロードして、WSLを実行するクライアントにインストールする。(インストール時の設定はデフォルトのままで問題ない)

インストール完了後、「XLaunch」という名称でスタートメニューやデスクトップに追加されているので、それを起動する。 起動後は設定画面が表示されるが、デフォルトのまま進める。

設定完了後は通知領域に常駐するので、なにか変更等行う場合はそちらから対応をする。 最後に、以下のコマンドをWSLから実行してX Window Serverが正常に動作することを確認する。

export DISPLAY=localhost:0.0 # WSLからXX Window Serverを利用するための環境変数
sudo apt install x11-apps
xeyes

これで、xeyesが動作する。

2. ssh接続を行う

X Window Serverの設定ができたら、あとはssh接続をしてX11フォワーディングをするだけだ。 以下のようにWSLからsshコマンドを実行する。

ssh -X user@host

これで、Xを使うコマンドを実行すればWSLを実行している環境でアプリケーションが実行される。