前言
  
  众所周知,windows 会通过虚拟交换机给本机和 wsl2(Linux 子系统)分别分配 ip。于是本机重启或重启 wsl 服务的时候会重新分配 ip。之前所作的端口转发,监听之类的都会失效。
  
  而如果你搜索 “如何固定 wsl 的 ip”,又会得到一系列复杂的配置方法。
  
  且不说是否有用,但这一系列操作十分令人头疼。
  
  但是,如果你的 windows 是 win11 22H2 以上,情况就不一样了。仅需一个配置文件,就能让 wsl 与 windows 共享 ip。
  
  具体操作
  
  微软在 2023 年 9 月做了一个更新:适用于 Linux 的 Windows 子系统 2023 年 9 月更新
  
  之后,仅需在Windows中的C:\Users<your_username>目录下创建一个.wslconfig文件,然后在文件中写入如下内容:
  
  autoMemoryReclaim=gradual
  
  networkingMode=mirrored
  
  dnsTunneling=true
  
  firewall=true
  
  autoProxy=true
  
  保存后重启一下 wsl 终端。
  
  使用 ip addr 查看 ip,就可以发现与 windows 宿主机完全一致。使用 ssh <wsl账号>@<宿主机ip> -p <wsl中ssh端口> 就可以轻松建立连接。
  
  以上设置非原创,参考了这篇随笔:解决"wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理"
  
  至此,可能困扰过你的代理问题也解决了。
  
  其他系统版本
  
  我只能说抱歉,我没有找到有效且简单的方法。不过如果仅仅是远程而不用文件传输(文件传输用 git 之类的其他方式),倒是有一个旁门左道的方法。
  
  原理:在 windows 宿主机上安装 ssh,然后使用 ssh 连接 windows。这时候会打开 powershell 的终端。输入 wsl 即可运行当中的 wsl.exe。
  
  操作如下:
  
  在 windows 上安装 ssh
  
  Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
  
  启动 ssh 服务,设置自启动,看状态。
  
  Start-Service sshd
  
  Set-Service -Name sshd -StartupType 'Automatic'
  
  Get-Service sshd
  
  更新 wsl ,否则连接后无法启动 wsl。
  
  wsl --update --pre-release
  
  之后,使用 windows 的账号连接 windows 的 ssh,即可远程 wsl 服务了。
  
  如果嫌启动 wsl 麻烦,可以再做一个配置,直接把 ssh 的终端设置为 wsl
  
  New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\wsl.exe" -PropertyType String -Force
  
  希望对你有帮助。


已注销
1 声望3 粉丝

引用和评论

0 条评论