LoginSignup
3
2

More than 3 years have passed since last update.

WSL+VcXsrv+sshでX11のフォワード

Posted at

WSL+VcXsrv でX11 forwading

通常、リモートのX11アプリのウィンドウをssh経由でローカルに出すには、-Xオプションを使えばよい(圧縮の-Cとかは環境と人によるので省略、sshd_configの設定やらなんやらは他にいろいろ記事があるのでそちらも省略)。

ssh -X remote-addr

が、WSLでVcXsrvを使っているとこの方法では次のようなエラーが出てうまくいかない。

エラーメッセージ
connect /tmp/.X11-unix/X0: No such file or directory
xterm Xt error: Can't open display: remote-addr:10.0

理由は、-Xオプションがリモートのlocalhost:(port#)をローカルのunix:0に転送しようとするから。VcXsrvはWSL環境外なので、unixドメインのソケットを作っていないため、リモート側でデフォルトに設定されるディスプレイ10(ポート6010)をローカル側の/tmp/.X11-unix/X0に接続しようとしてエラーになる。

で、とりあえずあまり美しくはないけれど、以下のようにするとできる。

ローカル
ssh -R 6000:localhost:6000 remote-addr
リモート
export DISPLAY=:0

これは単純に転送先をローカルのtcp/6000にしただけで、冷静に考えれば思いつくのだけれど、ちょっとハマったのでメモ的に残しておこうかと。
使用するディスプレイ/ポートを変更する場合は以下のようにすればよい。

ローカル
ssh -R 6005:localhost:6000 remote-addr
リモート
export DISPLAY=:5

要するに普通のポートフォワードとXのディスプレイ設定ですね ;-)
VcXsrv側で使用するポートが変わる場合は、localhostの後のポートをそちらに合わせればよい、と。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2