解决wsl2中的ubuntu无法通过ssh连接的问题
之前介绍过wsl2的ssh连接问题,但是最近又碰到无法连接的情况,通过一顿查资料
发现了个比较特别的方法
首先可以通过powershell命令查看目前的端口开放情况1
Get-NetFirewallRule | Where-Object {$_.LocalPort -eq 22 -or $_.DisplayName -like "*SSH*"} | Select-Object DisplayName, Enabled, Action, Direction
这个是查看的22端口或者名称带有SSH的
还可以直接看22端口的入站规则1
Get-NetFirewallRule -Direction Inbound | Where-Object {$_.LocalPort -eq 22} | Select-Object DisplayName, Enabled, Action
确认下是否已有对应规则,没有的话可以通过下面的命令来添加
方法1:允许所有网络的ssh访问
1
New-NetFirewallRule -DisplayName "WSL2 SSH Inbound" -Direction Inbound -Protocol TCP -LocalPort 22 -Action Allow
当然这样不太安全
所以我们最好是指定下来源ip
方法二:只允许局域网ip来访问1
New-NetFirewallRule -DisplayName "WSL2 SSH LAN" -Direction Inbound -Protocol TCP -LocalPort 22 -Action Allow -RemoteAddress 192.168.0.0/16,10.0.0.0/8,172.16.0.0/12
后面的网段可以根据所需限定
然后可以在所需机器进行访问验证1
ssh -v user@192.168.xxx.xxx
可以访问了的话说明我们这个就已经放行了,通过这个我们也能发现其实wsl2的这种方式一方面是让linux更加完整,但是对于所处的windows宿主机,想进行一些连通访问就会变得更加麻烦,也算是种取舍