返回顶部

ssh连接局域网Windows中的WSL2

1. WSL2的配置

不得不说WLS2确实好用,连docker都不用装了,直接Ubuntu启动,再搭配vscode的插件,嘎嘎乱杀,巨硬无敌


1.1 先在WSL2中安装openssh-server

sudo apt update
sudo apt install openssh-server

1.2 配置ssh服务器参数

这里主要需要开启默认端口22和允许密码登录,使用sudo vim修改文件/etc/ssh/sshd_config
这里需要取消Port 22和PasswordAuthetication yes两行的注释

1.3 启动ssh服务,并设置WSL2启动时自动启动服务

sudo service ssh start
sudo systemctl enable ssh

OK,至此WSL2系统的配置完毕,接下来需要对Windows系统进行端口转发。


2.Win系统的配置

2.1 连接到WSL2

使用管理员权限打开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

2.2 端口转发

运行如下命令设置端口转发规则,

netsh interface portproxy add v4tov4 listenport=22 listenaddr=0.0.0.0 connectport=22 connectaddress=WLS2_IP_ADDRESS

上图中的WSL2_IP_ADDRESS需要替换,在你的子系统中使用ifconfig查看具体的命令,如下,这里我查询到的结果是172.31.25.181,

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.31.25.181  netmask 255.255.240.0  broadcast 172.31.31.255
        inet6 fe80::215:5dff:fe9d:abf6  prefixlen 64  scopeid 0x20<link>
        ether 00:15:5d:9d:ab:f6  txqueuelen 1000  (Ethernet)
        RX packets 1945  bytes 1496782 (1.4 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1328  bytes 158215 (158.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

因此我的命令为

netsh interface portproxy add v4tov4 listenport=22 listenaddr=0.0.0.0 connectport=22 connectaddress=172.31.25.181

2.3验证规则

netsh interface portproxy show v4tov4

我这里显示结果为

侦听 ipv4:                 连接到 ipv4:

地址            端口        地址            端口
--------------- ----------  --------------- ----------
0.0.0.0         22          172.31.25.181   22

2.4 Win回显请求

这里发现我的设备无法ping通win,因此还需要设置win的防火墙,左下角搜索防火墙

Windows防火墙 --> 高级设置--> 入站规则 --> 在列表里找到"文件和打印机共享(回显请求 - ICMPv4-In)" -> 右键启用规则,并设置其属性里设置为<允许连接> ,如下所示

2.5 远程连接到WSL2

打开终端,确保自己与win在同一个局域网即可,使用如下命令,显示指明端口22,同时获取win的局域网IP地址:

ssh -p 22 usernama@192.168.1.xx
posted @ 2025-03-23 18:00  Swetchine  阅读(1)  评论(0)    收藏  举报