Non-Profit, International

Spirit unsterblich.

局域网通过 SSH 连接 WSL2

字数统计:469 blog

微软在 Windows 11 22621 开始给 WSL2 添加了一项新功能,镜像网络模式,通过镜像网络模式可以最大化的减小配置 WSL2 网络拓扑配置的难度。

本文教程尽可能从简,目的是提供一个最小化的配置案例,减轻后续维护难度以及避免系统配置造成的差异。

  1. 给 Linux 发行版安装 SSH 服务器,Ubuntu 使用的包名是 openssh-server,Arch Linux 使用的包名是 openssh

  2. 然后配置 ssh 使用密钥连接,首先生成 ed25519 的公钥和私钥,这步自行网络搜索解决,得到私钥文件 id_ed25591 和公钥文件 id_ed25519.pub。

  3. 把 id_ed25519.pub 作为 SSH 服务器的认证公钥 cp id_ed25519 ~/.ssh/authorized_keys

  4. 设置 authorized_keys 的权限为 0600,.ssh 的权限为 0700

  5. 设置 SSH 服务器,nano /etc/ssh/sshd_configPort 233PermitRootLogin noPubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keysPasswordAuthentication no,其中 233 是 SSH 服务端口号,不要和 Linux 或者 Windows 的服务冲突。

  6. 配置服务自启动,Arch Linux 用 systemctl enable sshd,Ubuntu 用 systemctl enable ssh

  7. 配置 WSL2,编辑 Windows 的用户文件夹中的 .wslconfig,内容为:

    
     [wsl2]
     networkingMode=mirrored
     nestedVirtualization=false
     firewall=false
     [expermental]
     hostAddressLoopback=true
    
    
  8. 重启 WSL2 虚拟机。

  9. 在 Windows 中使防火墙放行 WSL2 虚拟机,使用 PowerShell 执行 Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allow

  10. 把 id_ed25591 私钥文件放到 SSH 客户端电脑的 Home 的 .ssh 文件夹中,Linux 需要设置 .ssh 和 id_ed25591 权限分别为 07000600

  11. 使用 ssh -p 233 username@WindowsIP 即可连接到 WSL2 中的 SSH 服务器。

另外 Arch 社区准备正式维护一个 WSL2 镜像,仓库在 ArchLinux-WSL,优点是周更并且镜像小,不会遇到密钥环过期之类的问题,也避免了不必要的依赖。

参考:

若无特殊声明,本人原创文章以 CC BY-SA 3.0 许可协议 提供。