要通过SSH访问远程windows主机内置wsl(以Ubuntu为例),需要以下步骤(前提是已经在wsl中安装并配置openssh-server)。
- 查找WSL的IP地址,因为内部桥接关系,wsl的ip地址与宿主机可能不在同一网段。可以通过
ip addr show eth0
查看wsl的ip地址。 - 配置端口转发,将windows宿主机端口映射到wsl端口。
netsh interface portproxy add v4tov4 listenport=YOUR_PORT listenaddress=0.0.0.0 connectport=YOUR_PORT connectaddress=WSL2_IP
.其中listenport是windows外部端口,connectport是wsl内部端口,如果两者一致,可以去掉connectport,connectaddress是前一步获取的wsl的ip地址。 - 如果wsl防火墙启用,配置防火墙允许该端口
sudo ufw allow YOUR-PORT
。 - 配置windows防火墙,允许端口通过。打开防火墙高级设置,在入站规则中添加新的规则,允许监听的windows端口通过防火墙。

补充:如果wsl未安装openssh-server,可以通过sudo apt-get install openssh-server
,进行安装,运行sudo service ssh start
起动服务,运行ssh service ssh enable
让ssh服务开机运行。运行nano /etc/ssh/sshd_config
编辑其中 Port 参数可以修改ssh监听端口。