16
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VS Code の Remote Development で X11 Forwarding する(Windows版)

Last updated at Posted at 2019-10-18

English translation below.

VS Code の Remote Development,便利ですね.
VS Code のターミナルで作業してて GUI が使いたくなったとき,通常の手順で使おうとしたら使えなかったので,なんとかした記録です.

1. 前提と環境

  • Windows 10
  • VS Code 1.38.1
  • Remote Development 0.39.6
  • Xming 6.9.0.31
  • Ubuntu 18.04 (WSL)
  • OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017 (WSL)

普段は WSL で DISPLAY 環境変数を設定して ssh すれば X Window が使えます.

$ export DISPLAY=localhost:0.0
$ ssh server -X
$ xclock

ですが VS Code の Remote Development 上では DISPLAY 環境変数が設定されていないので,X 転送できません.

$ xclock
Error: Can't open display:

2. x11 転送してくれる bat ファイルを作る

さて,なぜ VS Code のターミナルで X Window が使えないのかというと,VS Code はWSL 側では無く Windows 側の ssh コマンドを使って接続しているからです.なので Windows 側で DISPLAY を設定する必要があります.

しかし,Windows側の ssh コマンド(open ssh)では DISPLAY 環境変数を翻訳してくれる機能が無いので失敗してしまいます.今回は WSL の ssh コマンドを使って運用でカバーします.
WSL で DISPLAY 環境変数を設定して,ssh コマンドを叩くバッチファイルを作ります.

x11ssh.bat
@wsl export DISPLAY=localhost:0.0; ssh %*

バッチファイルは実行するコマンドをそのまま echo する仕様なのですが,@から始まる行はされません.バグるのが怖いので付けます.
ここで一旦このバッチファイルで SSH, X11 転送ができるか確認してください.

cmd
> x11ssh server -X
$ xclock

例えば .ssh/config を設定していて Remote Development に config を読み込ませている場合,Windows 側と WSL 側の config を揃えておく必要があります.例えば私は git で config を管理しているのでこのあたりの不整合は発生しません.

3. Remote Development の設定を変更

通常,Remote Development ではシステム標準の ssh コマンドを使いますが,このバッチファイルを変わりに使ってもらうようにします. Ctrl + , で設定を開き, Remote.SSH: Path に先程のバッチファイルのパスを設定します.

An absolute path to the SSH executable. When empty, it will use "ssh" on the path or in common install locations.

このとき,他のオプションによってはうまくいかない場合があります.例えば Remote.SSH: Use Local Server を有効にしたらうまくいきませんでした.私の環境では,デフォルト設定から Path のみを変えた状態ならば成功しました.

この状態で X11 アプリを叩いて開ければ成功です.

$ xclock

#4. 最後に
うちではうまく行かなかったよ・更にこうしたらできたよとかあればコメントください.
あと役に立ったよ! という場合はぜひ いいね して Twitter 等で広めていただけると嬉しいです.

#5. English TL;DR
Create a batch file for starting SSH using X11 and set it to Remote.SSH: Path of Remote Development.

16
18
3

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
16
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?