以下に 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 ではなく、今作成したバッチファイルを使用するように設定します。
- Windows側でVS Codeを開きます。
Ctrl + ,で設定を開き、画面右上の「設定(JSON)を開く」アイコンをクリックして settings.json を開きます。- 以下の2つの設定項目を追加(または既存のものを修正)します。
{
// 1で作成したバッチファイルの「絶対パス」を指定(バックスラッシュは2つ重ねる)
"remote.SSH.path": "C:\\Users\\あなたのユーザー名\\bin\\ssh.bat",
// ローカル(Windows)側での不要なサーバープロセスの立ち上げを抑制する
"remote.SSH.useLocalServer": false
}
3. リモート接続を実行する
設定が完了したら、実際に接続を行います。
- 設定を確実に反映させるため、VS Codeを一度完全に閉じて再起動します。
- 左下の緑色のリモート接続アイコン(または F1 キーを押して Remote-SSH: Connect to Host…)をクリックします。
- WSL(Linux)側の ~/.ssh/config に記載されているホスト名(例: oci-ubuntu)を選択します。
- 初回接続時のみ「接続先のOSプラットフォーム(Linux / Windows / macOS)」を聞かれるので、Linux を選択します。