別PCからWSL2にSSH接続する方法(mirrored mode)

スポンサーリンク

WSL2を使っていると、LAN内の別PCやタブレットからSSH接続したい場面があります。

WSL2はデフォルトでNAT構成になっており、同一PC内からは
localhost
で届くものの、LAN上の別PCからはそのままでは届きません。

対処方法はいくつかありますが、今回はWindows 11で使えるmirrored networking modeを使う方法を選びました。portproxyを使う方法と比べて、WSL2のIPアドレスが再起動のたびに変わる問題を気にしなくていいのがメリットです。

ということで、手順をメモ。


環境

  • Windows 11
  • WSL2 Ubuntu 24.04

目次

  1. WSL2にSSHサーバをインストール
  2. sshdのポートを変更
  3. mirrored modeを有効化
  4. ファイアウォールの設定

1.WSL2にSSHサーバをインストール

WSLのターミナルで実行します。

sudo apt update
sudo apt install -y openssh-server

インストールできたら、systemdでサービスとして登録・起動します。

sudo systemctl enable ssh
sudo systemctl start ssh

起動確認:

systemctl status ssh

Active: active (running) と表示されればOKです。


2. sshdのポートを変更

デフォルトは22番ですが、将来的にWindows側にもsshd(22番)を入れることを想定して、WSL2側は2222番にしておきます。

/etc/ssh/sshd_config#Port 22
Port 2222 に変更します。

sudo sed -i 's/^#Port 22/Port 2222/' /etc/ssh/sshd_config

Ubuntu 24.04はsystemdのsocket
activationを使っているので、ポート変更後は以下の3コマンドが必要です。

sudo systemctl daemon-reload
sudo systemctl restart ssh.socket
sudo systemctl restart ssh

リッスンしているか確認:

ss -tlnp | grep 2222

0.0.0.0:2222 が表示されればOKです。


3. mirrored modeを有効化

Windows側の設定です。

%USERPROFILE%\.wslconfig
に以下を追記します(ファイルがなければ新規作成)。

[wsl2]
networkingMode=mirrored

PowerShellから書き込む場合:

Add-Content "$env:USERPROFILE\.wslconfig" "`n[wsl2]`nnetworkingMode=mirrored"

追記したらWSLを再起動します。

wsl --shutdown

WSLのターミナルを開き直して、WindowsのLAN
IPが含まれているか確認します。

hostname -I

192.168.xxx.xxx が含まれていればmirrored
modeが有効になっています。


4. ファイアウォールの設定

mirrored
modeではWindowsファイアウォールに加えて、Hyper-Vファイアウォールへの許可も必要です。これがないとLANからタイムアウトになります。

管理者権限のPowerShellで以下の2つを実行します。

# Hyper-Vファイアウォール
New-NetFirewallHyperVRule -Name "WSL2 SSH" -DisplayName "WSL2 SSH" -Direction Inbound -VMCreatorId "{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}" -Protocol TCP -LocalPorts 2222

# Windowsファイアウォール
New-NetFirewallRule -Name "WSL2 SSH" -DisplayName "WSL2 SSH" -Direction Inbound -Protocol TCP -LocalPort 2222 -Action Allow

{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}
はWSL用に固定されているGUIDです。以下のコマンドで確認できます。

Get-NetFirewallHyperVVMCreator

接続確認

別PCから以下で接続できます。

ssh -p 2222 <ユーザー名>@<WindowsのLAN IP>

まとめ

項目設定内容
WSL2ネットワークmirrored mode
WSL2 sshdポート2222
Hyper-VファイアウォールTCP 2222 許可
WindowsファイアウォールTCP 2222 許可

portproxyと異なり、すべての設定が永続します。WSL再起動後も追加の操作は不要です。

コメント

タイトルとURLをコピーしました