局域网通过 SSH 连接 WSL2
微软在 Windows 11 22621 开始给 WSL2 添加了一项新功能,镜像网络模式,通过镜像网络模式可以最大化的减小配置 WSL2 网络拓扑配置的难度。
本文教程尽可能从简,目的是提供一个最小化的配置案例,减轻后续维护难度以及避免系统配置造成的差异。
-
给 Linux 发行版安装 SSH 服务器,Ubuntu 使用的包名是
openssh-server
,Arch Linux 使用的包名是openssh
。 -
然后配置 ssh 使用密钥连接,首先生成 ed25519 的公钥和私钥,这步自行网络搜索解决,得到私钥文件 id_ed25591 和公钥文件 id_ed25519.pub。
-
把 id_ed25519.pub 作为 SSH 服务器的认证公钥
cp id_ed25519 ~/.ssh/authorized_keys
。 -
设置 authorized_keys 的权限为
0600
,.ssh 的权限为0700
。 -
设置 SSH 服务器,
nano /etc/ssh/sshd_config
,Port 233
,PermitRootLogin no
,PubkeyAuthentication yes
,AuthorizedKeysFile .ssh/authorized_keys
,PasswordAuthentication no
,其中 233 是 SSH 服务端口号,不要和 Linux 或者 Windows 的服务冲突。 -
配置服务自启动,Arch Linux 用
systemctl enable sshd
,Ubuntu 用systemctl enable ssh
。 -
配置 WSL2,编辑 Windows 的用户文件夹中的 .wslconfig,内容为:
[wsl2] networkingMode=mirrored nestedVirtualization=false firewall=false [expermental] hostAddressLoopback=true
-
重启 WSL2 虚拟机。
-
在 Windows 中使防火墙放行 WSL2 虚拟机,使用 PowerShell 执行
Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allow
。 -
把 id_ed25591 私钥文件放到 SSH 客户端电脑的 Home 的 .ssh 文件夹中,Linux 需要设置 .ssh 和 id_ed25591 权限分别为
0700
和0600
。 -
使用
ssh -p 233 username@WindowsIP
即可连接到 WSL2 中的 SSH 服务器。
另外 Arch 社区准备正式维护一个 WSL2 镜像,仓库在 ArchLinux-WSL,优点是周更并且镜像小,不会遇到密钥环过期之类的问题,也避免了不必要的依赖。