🔖

WSL2 2.0.x時代の外部PCからWSLに接続する方法

2024/02/13に公開

netshなんていらんかったんや

前回外部PCからWSLのSSHに接続するという記事を書いた。
その後すぐこの情報が古いことが分かった。。。

先日WSL2.0.0がリリースされその時の目玉?となっていたいくつかの新機能のうち、
外部からの接続に関するパラメータがあることをすっかり忘れていた。
(記事書いときながら何してんだか)

ということで前回の記事をアップデートする内容となっている。
ただし、Windows11以上が必要なので、
Wincows10の場合は前回の記事を参照のこと

ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪

------------------- ↓ 本題はここから ↓-------------------

事前準備

Windows11 22H2以上が必要
WSLのバージョンを2.0.14以上にしておく

powershell
wsl --update
wsl --version
  WSL バージョン: 2.0.14.0

.wslconfigに以下の項目を追加

~/.wslconfig
[wsl2]
・・・
networkingMode=mirrored

クライアントPCに疎通確認

疎通確認用のツールを入れて、
疎通できないことを確認しておく

powershell
winget install Insecure.Nmap

ターミナルを再起動してPathを通しておく
ポート22の状態を確認すると

nmap 192.168.1.32 -p 22
  PORT   STATE    SERVICE
  22/tcp filtered ssh

ポート22は filtered で解放されていないということがわかる

ファイヤーウォールのポート開放

ファイやウォールの設定は今回も必要
WindowsPCにはWindows Defenderというセキュリティツールが入っているが、
外部から接続する際にポートを開ける必要がある。
GUIツールでも可能だが、
ここではコマンドで実行
管理者権限のあるPowershell上で行う

powershell
New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Inbound -LocalPort 22 -Action Allow -Protocol TCP
New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Outbound -LocalPort 22 -Action Allow -Protocol TCP

参考:
https://github.com/microsoft/WSL/issues/4150#issuecomment-504209723

再度疎通確認

疎通設定ができたので外部PCから疎通確認してみる

nmap 192.168.1.32 -p 22
  PORT   STATE SERVICE
  22/tcp open  ssh

ポート22は open で解放されていることがわかる

SSHで接続

ではSSHでサーバーPCに接続してみる。

ssh user@192.168.1.32
  Last login: Tue Feb  6 23:37:09 2024 from 172.18.160.1
  [user@DESKTOP-xxxxx ~]$

('Д') つながったわ

netshについて調べた時間を返してくれ。。。

Discussion