はじめに
リモートホスト上で作業する都合上、VS CodeからSSHで接続する必要が出ました。現在はWindows 11のWSL上のUbuntuで作業しているため、その環境からリモートホストへ接続したいと考えました。
本記事では、その設定手順をまとめます。(目安:5分)
前提
Windows 11 / WSL / Ubuntuの設定はすでに完了しており、Ubuntu上でWindows上にインストールしたVS Codeを起動できる状態にしておいてください。もし未設定であれば、以下を参照してください。
データサイエンティストの環境構築 2024編 (1) (Windows環境+WSL Ubuntu)
設定手順
1. Ubuntu SSH鍵生成
WSL Ubuntuへログインし、SSH鍵を生成しください。
> ssh-keygen
2. WSL Ubuntu側のconfigファイルの作成
WSL Ubuntuの~/.sshのディレクトリに、configファイルを作成します。
Host <タグ名> # 接続先の名前
HostName <xxx.xxx.com or 192.111.xx.xx> # 接続先の公開ホスト名またはIPアドレス
User <Your username> # SSH接続用のユーザ名
IdentityFile ~/.ssh/id_rsa # SSH鍵
作成後、権限を設定します。
> chmod 600 config
3. Windows側のconfigファイルの作成
Windows側には、WSL Ubuntuと別のSSL接続先がある場合
Windows上でもC:\Users<Username>.sshディレクトリで configファイルを編集します。同じHost IDとHostNameを設定します。(これで、接続時、VScodeからホストIDが見えます)
Host <タグ名>
HostName <hostname or IP address to connect>
WSL UbuntuでのSSL接続しかない場合
一方、SSHはWSL Ubuntu側での接続のみで、configファイルを一つにしたい場合は、シンボリックリンクを作成します。Windowsで管理者権限のパワーシェルターミナルを立ち上げて、以下を実行してみてください。
# Windows側の.sshディレクトリへ移動
cd $env:USERPROFILE\.ssh
# WSL側のconfigを指すシンボリックリンクを作成
# (Ubuntuの部分は自分のディストリビューション名に合わせてください)
# (user名もUbuntu側のログイン名に変えてください)
cmd /c mklink config \\wsl.localhost\Ubuntu\home\<アカウント名>\.ssh\config
これで完了です。
4. VSCodeでRemote-SSHのインストール
WSL上のUbuntuからVS Codeを起動し、拡張機能 Remote - SSH をインストールしておいてください。

5. Windows側でssh.batファイルの作成
以下のディレクトリに移動し、ssh.batを作成してください。
C:\Users<アカウント名>\bin
cd C:\Users\<アカウント名>\bin
echo '' > ssh.bat
そして、ssh.bat に以下の1行を追加してください(メモ帳など、任意のエディタでOKです)。
C:\Windows\system32\wsl.exe ssh %*
接続
VSCodeから以下を選択します。(Connect to Host)
すると、config ファイルで設定した タグ名が表示されるはずです。
それを選択すると、以下のように接続が始まり、問題がなければ自動で完了します。
トラブルシューティング
接続でエラーになる場合は、以下を試してください。
PowerShellを起動し、まずは ssh.bat 経由で直接接続できるか確認します。パスワード入力が必要な場合がありますが、接続できるはずです。
C:\Users\<YourUser>\bin\ssh.bat <user>@<remote-host>
また、以下を実行して、configファイルを利用して、接続できるか確かめてください。
C:\Windows\system32\wsl.exe ssh <Tag ID>
さらに、WSL上でUbuntuが複数動いている(サブシステムが2つ以上ある)場合は、config があるディストリビューションをデフォルトに設定してください。
wsl --list --verbose
wsl --setdefault <サブシステムの名前>
終わりに
いかがでしたでしょうか? 簡単な設定で便利な機能が使えると思います。
Happy Hacking!!!



