在 wsl 2 中开启 ssh 连接

之前在 wsl 1 中开启 ssh 其实很方便,只要把 sshd 服务起来就好了,但是在 wsl 2 中就不太一样了,
我这边使用的是 wsl 2 中的 Ubuntu 20.04,直接启动 sshd 服务是没法让其他机器连接的,而且都没有 ifconfig 命令可以查看 ip
不过可以用直接用 ip a来查看,可以看到这个 ip 是172网段的,而在 wsl 1 中可以看到 ip 就是 win 的 ip,
所以需要做一些操作,首先要安装 openssl-server

1
2
sudo apt update
sudo apt install openssh-server

另外如果需要提高安全性,可以wsl 中配置 hosts.allow

1
sshd:192.168.xx.

先定一个子网段,然后对于ssh的配置,可以做以下修改

1
2
Port 22
PasswordAuthentication yes

在进行重启

1
sudo service ssh --full-restart

配置以后发现上面的问题,没法远程登录,因为 wsl 2 是基于 hyper-v 虚拟机实现的,并且 ip 使用的是一个虚拟出来的子网 ip,所以需要在 Windows 这一层配置端口的转发,可以通过命令netsh interface portproxy show v4tov4看到

截图是我已经添加好了的,先把原来的删除,再进行添加

1
2
netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=22
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=22 connectaddress=172.19.129.207 connectport=22

也可以全量删除

1
netsh int portproxy reset all

但是这样也不能直接访问了,还需要开启防火墙

1
netsh advfirewall firewall add rule name="WSL SSH" dir=in action=allow protocol=TCP localport=22