一个与 WSL2 建立远程的简单方法

前言

众所周知,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文件,然后在文件中写入如下内容:

[experimental]
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。

操作如下:

  1. 在 windows 上安装 ssh
    Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
  2. 启动 ssh 服务,设置自启动,看状态。
    Start-Service sshd
    Set-Service -Name sshd -StartupType 'Automatic'
    Get-Service sshd
  3. 更新 wsl ,否则连接后无法启动 wsl。
    wsl --update --pre-release
  4. 之后,使用 windows 的账号连接 windows 的 ssh,即可远程 wsl 服务了。
  5. 如果嫌启动 wsl 麻烦,可以再做一个配置,直接把 ssh 的终端设置为 wsl
    New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\wsl.exe" -PropertyType String -Force

希望对你有帮助。

相关推荐
99WOODYXIN20 天前
win10 wsl2 install
linux·docker·wsl2
内卷焦虑人士1 个月前
【Bug】RuntimeError: Engine loop has died
1024程序员节·vllm·wsl2
YRr YRr2 个月前
在Windows上安装WSL2和Ubuntu 20.04以搭建C++开发环境的详细指南
c++·windows·ubuntu·wsl2
一夜相思愁2 个月前
windows通过wsl2安装linux系统之Ubuntu,傻瓜式安装
linux·windows·ubuntu·wsl·wsl2
fysuccess3 个月前
Windows系统通过WSL2安装Ubuntu22.04系统及图形化界面
windows·虚拟化·ubuntu22.04·wsl2·开发人员主页
NullPointerExpection3 个月前
win10安装wsl2(ubuntu20.04)并安装 TensorRT-8.6.1.6、cuda_11.6、cudnn
ubuntu·win10·wsl·tensorrt·cuda·cudnn·wsl2
guangshui5164 个月前
16001.WSL2 ubuntu20.04 编译安装 vsomeip
linux·wsl2
AriFe.5 个月前
如何在Windows上使用Docker搭建PHP开发环境
windows·docker·php·wsl2·baota
micromicrofat5 个月前
【wsl2】WIN11借助wsl2挂载ext4磁盘
ubuntu·win11·wsl2
John_Snowww5 个月前
CSAPP Lab01——Data Lab完成思路
vscode·csapp·wsl2·cmu15213