外部からWSL1を介してWSL2にSSH接続する

WSL1、WSL2ともにsshサーバーを動かしておく。
WSL1については下記参照。

上記記事の繰り返しになるが、Ubuntuの場合はインストール済みのものを使うと "Connection refused." となって接続を拒否される。openssh-serverを再インストールしてしまうのが手っ取り早い。

# apt purge openssh-server
# apt install openssh-server
# service ssh start

WSL2はIPアドレスが変動するので都度確認がいる。
wsl上のlinuxからwsl上の他のlinux(例はUbuntu)のIPアドレスを得るにはwindowsのコマンドを使う。

/mnt/c/WINDOWS/system32/wsl.exe -d Ubuntu -e hostname -I

sshの'-J'オプションを使ってWSL2のUbuntuに接続。

ssh $(ssh XXXX '/mnt/c/WINDOWS/system32/wsl.exe -d Ubuntu -e hostname -I') -J XXXX

'XXXX'はwindows機のアドレス(=WSL1のアドレス)。シェルのコマンド置換でUbuntuIPアドレスを埋め込んでいる。