lisz-works

プログラミングと興味を貴方に

WSLにVSCodeをインストールしてそこからRemote SSHする

【スポンサーリンク】

Visual Studio Code

こんにちわlisです!

普段WSLから多段SSHで接続しているUbuntu環境で作業しています。

これをVSCodeのRemote SSHで接続して、GUI環境で作業したい……

と常々思っていたのですが、どうにもうまく行かず困っていました。

この悩みが解決したWSLにVSCodeをインストールしてそこからRemote SSHする方法についてです!

下準備

下準備は2点。

  1. MobaXTerm(またはX11サーバ)をセットアップ
  2. WSLで対象にSSHできる事を確認

今回はMobaXTermで作業します。

mobaxterm.mobatek.net

もしくは他のX11サーバが起動していればそれでも良さそうですが、MobaXTermで作業していきます。

MobaXTermがインストールできたら、MobaXTermでWSLを起動しましょう。

WSLにVSCodeをインストール。

コマンドを実行していって、VSCodeをWSLにインストールしていきます。

$ sudo apt update
$ sudo apt install software-properties-common apt-transport-https wget
$ wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
$ sudo apt update
$ sudo apt install code
$ sudo apt update
$ sudo apt upgrade

WSLでVSCodeを起動する

WindowsにVSCodeを入れている場合は、codeで実行するとそっちが起動されてしまう模様。

which codeしてみると、フルパスがわかります。

$ which code
/usr/bin/code

このフルパスで起動します。

WSLのVSCode

あとはRemote SSH拡張を入れて、WSLで接続していた対象にSSH接続すればOK。

VSCodeの起動にフルパスが必要なのか謎

一旦閉じてなんやかんやしたあと、起動しなおしたのですが……

フルパスのことを忘れてcodeと叩いて実行しました。

すると、下記のような質問が出てyで回答したところ、WSL側のVSCodeが起動しました。

$ code
To use Visual Studio Code with the Windows Subsystem for Linux, please install Visual Studio Code in Windows and uninstall the Linux version in WSL. You can then use the `code` command in a WSL terminal just as you would in a normal command prompt.
Do you want to continue anyway? [y/N] y
To no longer see this prompt, start Visual Studio Code with the environment variable DONT_PROMPT_WSL_INSTALL defined.

(Google翻訳)
Linux 用 Windows サブシステムで Visual Studio Code を使用するには、Windows に Visual Studio Code をインストールし、WSL で Linux バージョンをアンインストールしてください。 その後、通常のコマンド プロンプトと同じように、WSL ターミナルで「code」コマンドを使用できます。
続行しますか? [y/N] y
このプロンプトが表示されないようにするには、環境変数 DONT_PROMPT_WSL_INSTALL を定義して Visual Studio Code を起動します。

とのことでした。

なので

export DONT_PROMPT_WSL_INSTALL=1

とかしてみたら、以降はcodeと叩くとこの表示はされずにWSLのVSCodeが起動してくれるようになりました!

参考

コチラを参考にしました。ありがとうございました!

linuxize.com

mobaxterm.mobatek.net

www.atmarkit.co.jp

あとがき

WSLのVSCodeからRemote SSHするでした!

実はここまでで色々試したのですが軒並みダメで頭を抱えていました。

  • WindowsのVSCodeのRemote SSHで接続してみる
    • 接続失敗などでNG
  • X11ポートフォワーディングしてホストのVSCodeを表示してみたり
    • 表示はできたが重すぎて使い物にならない
  • リモートデスクトップでホストに接続
    • 多段SSHが必要なせいか、なぜかうまく接続までこぎつけず

この問題がやっと解決しました……

これでホストのコードがVSCodeでいじれる……!