局域网通过 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,优点是周更并且镜像小,不会遇到密钥环过期之类的问题,也避免了不必要的依赖。