最近配置了单位一台工作站,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工具去连接
大功告成