Have fun with sci.dog

wsl2远程访问

最近配置了单位一台工作站,4090,想在上边做计算,用wsl2。配置结束后,发现远程ssh连接不上。搜索后发现,wsl2采用虚拟机技术隔离linux。

win10/win11创建了一个WSL的虚拟交换机,上图就是网关了。即win10/win11主机的ip地址是172.25.48.1,子网掩码是20位。

linux子系统也有一个同网段的ip。

思路就是:

1、给linux子系统设定固定的ip地址。把下边这段代码写到~/.bashrc中,建议当前用户和root用户都写进去

# static ip
if [ "$(ip addr show eth0 | grep 'inet\b' | awk '{print $2}' | head -n 1)" != "172.25.48.2/20" ];
then
sudo ip addr del $(ip addr show eth0 | grep 'inet\b' | awk '{print $2}' | head -n 1) dev eth0
sudo ip addr add 172.25.48.2/20 broadcast 172.25.63.255 dev eth0
sudo ip route add 0.0.0.0/0 via 172.25.48.1 dev eth0
fi

大概解释下:

ip地址在线计算器 ip掩码计算工具 网络子网掩码计算方法 十进制转二进制 (tsinghua.edu.cn)

结合这个看,基本就明白了吧。

宿主ip为172.25.48.1,Linux子系统每次开启,自动重设ip为172.25.48.2

2、配置dns

使用命令 vim /etc/wsl.conf 文件中写入如下命令

[network]
generateResolvConf = false # 不自动生成dns配置,必须
generateHosts = false # 是否生成hosts文件,可选
[interop]

enabled = false # 不能调用Windows进程,可选

appendWindowsPath = false # 不添加Windows路径,可选

3、配置dns解析服务器

用命令 vim /etc/resolv.conf 文件中写入如下命令,用宿主的ip即可/

nameserver 172.25.48.1 # 写入你本地最好用的dns就行

4、开启openssh-server,这个网上自行查询,修改端口为2222

5、使用netsh进行端口转发

netsh interface portproxy add v4tov4 listenport=2222 connectaddress=172.25.48.2 connectport=2222

show一下

netsh interface portproxy show all

ok,现在已经将linux子系统的2222端口转发到宿主机的2222端口了。

6、最后使用ssh工具试试

先看看远程工作站的ip

用ssh工具去连接

大功告成

赞(0)
未经允许不得转载:SciDog » wsl2远程访问

评论 抢沙发