最简单方式SSH连接局域网中另一台电脑的WSL2
1、首先确认一下WSL2中的SSH服务是否开启:
先安装更新一下,再安装一下ssh服务模块,这里很多人都没有安装过。
sudo apt update
sudo apt upgrade
sudo apt install openssh-server
2、配置SSH服务器:
打开配置文件,这里设置一些SSH连接配置
sudo nano /etc/ssh/sshd_config
去掉#号即可
取消注释 #Port 22
行以指定SSH端口(默认为22)
取消注释 #PasswordAuthentication yes
行以允许密码认证
保存文件并退出编辑器,不会保存的参考下面。
ctrl+x => y => 回车
3、启动SSH服务,并设置启动电脑时自动启动:
启动服务
sudo service ssh start
sudo systemctl enable ssh
4、最关键的来了,在windows中的设置,端口转发:
由于WSL2使用虚拟网络适配器,具有自己的私有IP地址,因此局域网内的其他机器无法直接访问WSL2实例。为了解决这个问题,我们需要在Windows中配置防火墙和端口转发规则。
打开Windows PowerShell,以管理员身份运行。运行以下命令,允许传入连接到WSL2:
New-NetFirewallRule -DisplayName "WSL2 SSH" -Direction Inbound -LocalPort 22 -Action Allow -Protocol TCP
(了解)
-
-DisplayName
:为规则指定一个显示名称,这里是 “WSL2 SSH”。 -
-Direction
:指定规则的方向,这里是 “Inbound”(入站)。 -
-LocalPort
:指定要允许的本地端口,这里是 22(SSH 通常使用的端口)。 -
-Action
:指定对匹配的流量采取的动作,这里是 “Allow”(允许)。 -
-Protocol
:指定协议类型,这里是 “TCP”。
运行以下命令设置端口转发规则,将传入的连接转发到WSL2实例:
netsh interface portproxy add v4tov4 listenport=22 listenaddress=0.0.0.0 connectport=22 connectaddress=<WSL2_IP_Address>
<WSL2_IP_Address> 需要一起替换掉,这个需要打开WSL2 然后运行ifconfig就能看到了。
例如我的,就像下面这样输入
netsh interface portproxy add v4tov4 listenport=22 listenaddress=0.0.0.0 connectport=22 connectaddress=172.31.88.96
验证端口转发规则是否正确设置:
netsh interface portproxy show v4tov4
登录时使用下面命令,连接局域网的其他电脑,指定具体端口22,就到了wsl2中。与以往方式的区别。
ssh -p 22 Username@192.168.xxx.xxx
=======================================================================
wsl2中的地址是动态的,可能会改变,不算一劳永逸的办法,但是上面的设置已经能够满足一定的使用需求,且操作不难。
关于设置wsl2为静态IP根据个人需求,由于较为繁琐,不符合题目,故有需求请别处查看。不建议,操作后wsl2似乎没连不上网,重新设置了DNS才解决。
请点击