VS Code で WSL 上の SSH の設定を使って Remote SSH で接続する

WSL 上で VS Code を使用しているのですが、remote ssh を使おうとすると windows 側の ssh の設定が使われます。また、無理やり wsl 側の設定を使おうとしてもうまくいきません。

以下に Windows の bat ファイルを使って WSL の SSH クライアントを呼び出す方法が書いてあったので、やり方をまとめてみました。

https://github.com/microsoft/vscode-remote-release/issues/937#issuecomment-578416517

尚、上記のやり方だと Windows 側の設定が使えなくなります。 私はそれで問題ありませんが、併用したいという場合の解決策は以下で提示されていました。

https://zenn.dev/kurusugawa/articles/vscode-remote-ssh-with-wsl

概要

VS Codeの「Remote - SSH」拡張機能はデフォルトでWindows側のOpenSSH(またはGit for WindowsのSSH)を使用するため、WSL(Linux)側に設定した ~/.ssh/config や鍵、ControlMasterなどの機能を利用することができません。

解決策は、「Windows側でダミーのバッチファイル(.bat)を作成し、その中からWSLの ssh コマンドを呼び出すようにVS Codeに設定する」という方法です。

設定手順

1. バッチファイル(ssh.bat)の作成

Windows 側の適当なフォルダ(例: C:\Users\ユーザー名\ssh.bat など)に ssh.bat という名前のファイルを作成し、以下の内容を記述します。

※バッチファイルを作成する際は、文字コード(エンコーディング)を 「ANSI」または「UTF-8」 で保存してください。(UTF-16だと正しく動作しない場合があります)

@echo off
C:\Windows\System32\wsl.exe bash -ic "ssh %*"

2. VS Code(Windows側)の settings.json の編集

次に、VS Codeが標準の SSH ではなく、今作成したバッチファイルを使用するように設定します。

  1. Windows側でVS Codeを開きます。
  2. Ctrl + , で設定を開き、画面右上の「設定(JSON)を開く」アイコンをクリックして settings.json を開きます。
  3. 以下の2つの設定項目を追加(または既存のものを修正)します。
{
  // 1で作成したバッチファイルの「絶対パス」を指定(バックスラッシュは2つ重ねる)
  "remote.SSH.path": "C:\\Users\\あなたのユーザー名\\bin\\ssh.bat",
  // ローカル(Windows)側での不要なサーバープロセスの立ち上げを抑制する
  "remote.SSH.useLocalServer": false
}

3. リモート接続を実行する

設定が完了したら、実際に接続を行います。

  1. 設定を確実に反映させるため、VS Codeを一度完全に閉じて再起動します。
  2. 左下の緑色のリモート接続アイコン(または F1 キーを押して Remote-SSH: Connect to Host…)をクリックします。
  3. WSL(Linux)側の ~/.ssh/config に記載されているホスト名(例: oci-ubuntu)を選択します。
  4. 初回接続時のみ「接続先のOSプラットフォーム(Linux / Windows / macOS)」を聞かれるので、Linux を選択します。
Hugo で構築されています。
テーマ StackJimmy によって設計されています。