はじめに
Windows + WSL 環境で開発していると、
- ノートPCからデスクトップPCのWSL環境に接続したい
- VSCode Remote SSHでWSLのコードを編集したい
というケースがあります。
しかし WSL2はネットワーク構造上、外部PCから直接SSH接続することが難しいです。
WSL2は以下のような構造になっています。
ノートPC
│
│ SSH
│
Windows
│
│ 仮想ネットワーク
│
WSL
WSLのIP(172.x.x.x)はWindows内部ネットワークのため、
通常は Windowsを踏み台(SSHゲートウェイ)にしてWSLへ接続する必要があります。
この記事では
- Windowsを踏み台にしてWSLにSSH接続する方法
- VSCode Remote SSHでWSL開発環境を作る方法
をまとめます。
前提条件
この記事では以下を前提とします。
- 接続先の WindowsデスクトップPCでSSHサーバーが有効化されている
- WSL(Ubuntuなど)がインストールされている
環境例
例として以下のような構成を想定します。
ノートPC
Mac / Windows / Linux
デスクトップPC
Windows 11
WSL
Ubuntu
IP構成の例
Windows: 192.000.00.01
WSL: 172.00.000.01
WindowsへSSH接続
まずWindowsにSSH接続できることを確認します。
ssh User@192.000.00.01
WindowsにログインできればOKです。
WSLへSSH接続
WSL側にSSHサーバーをインストールします。
sudo apt update
sudo apt install openssh-server
SSHサーバーを起動します。
sudo service ssh start
WSLのIPアドレスを確認します。
ip a
例
172.00.000.01
通常の接続方法(踏み台)
WSLに接続する場合、通常は以下のように 2段階SSH になります。
ssh User@192.000.00.01
ssh User@172.00.000.01
ただし、この方法は少し手間がかかります。
ProxyJumpを使った接続
SSH configを利用すると 1コマンドでWSLへ接続できます。
SSH設定ファイル
~/.ssh/config
以下を追加します。
Host windows
HostName 192.000.00.01
User User
Host wsl
HostName 172.00.000.01
User User
ProxyJump windows
これで以下のコマンドだけで接続できます。
ssh wsl
内部では以下のように接続されています。
ノートPC
│
│ ssh
│
Windows
│
│ ProxyJump
│
WSL
VSCode Remote SSH
VSCodeに以下の拡張をインストールします。
Remote - SSH
接続手順
Ctrl + Shift + P
Remote-SSH: Connect to Host
wsl
接続後、WSLのフォルダを開きます。
例
/home/User
これで WSL環境上で直接開発が可能になります。
最終的な開発構成
最終的な構成は以下のようになります。
ノートPC
│
│ VSCode Remote SSH
│
Windows
│
│ ProxyJump
│
WSL
│
├ node
├ git
└ 開発環境
これにより
- ノートPCからWSL開発
- Linux環境でコード実行
- VSCodeの補完やGit機能利用
が可能になります。
まとめ
WSL2は直接SSH接続が難しい場合がありますが、
Windowsを踏み台(SSHゲートウェイ)として利用することで
快適な開発環境を構築できます。
SSH config + ProxyJump を使うことで
接続もシンプルになります。
この記事を書いた背景
後書きで置いときます
OpenClawの開発を行う中で、
常にツールや機能の改修・追加を行える環境を作りたいと考えました。
そこで、デスクトップPCを OpenClawの実行環境(サーバー)として常時稼働させ、
ノートPCからSSH経由で接続して開発できるような構成を構築しました。
この構成にすることで、
- OpenClawを複数台常時起動した状態で運用できる
- ノートPCからいつでも開発・改修ができる
- 実行環境と開発環境を分離できる
といったメリットがあります。
また、常時稼働させるマシンとしては Mac miniを使うケースも多いですが、
コストパフォーマンスを考えると 同等スペックであればWindows PCの方が安価な場合が多いため、
今回は Windows + WSL 環境で構築しました。
その結果、
WindowsをSSHゲートウェイとしてWSLに接続する構成になったため、
同様の環境を構築したい方の参考になればと思い、この記事をまとめました。
※本記事では家庭LAN内での利用を想定していますが、 同様の構成は踏み台サーバー(Bastion Host)を用いたインフラ構成にも応用できます。