1
0

Windows安装WSL2,开启ssh连接,并使其在后台常驻

2026-07-15
Windows安装WSL2,开启ssh连接,并使其在后台常驻

玩了一段时间 Hermes 后,觉得2C2G的服务器实在是有点不够用,常驻跑 stt + 三个profile + docker虚拟化环境 + camofox浏览器,经常爆内存。恰好最近又总是听到关于 WSL 的讨论,感觉挺有缘份,便打算装个 WSL,把工作站当服务器使。然后今年正好 Ubuntu 26.04 LTS 版本也发布了,还没玩过,就拿 WSL 去尝尝鲜吧!

1.下载wsl2

系统版本:wsl2要求Windows 10 版本 2004(内部版本 19041)或更高版本。可以按 Win + R,输入 winver 并回车来查看版本。

使用一键安装命令进行安装(推荐):

这是微软官方推荐的最简单方式。

  1. 右键点击“开始”菜单,选择 “Windows PowerShell (管理员)”“终端 (管理员)”

  2. 在打开的窗口中输入以下命令并回车:

    wsl --install
    

    注意:如果你的系统版本较旧,此命令可能无效,请采用其他方式安装。

  3. 重启电脑(必要操作)。

  4. 可以通过 wsl -l -v 命令查看当前状态,如果显示 “没有安装的分发版”,就得自行装系统。

  5. 装系统: 使用 wsl.exe --list --online 列出可用的分发和 wsl.exe --install <Distro> 进行安装。

    wsl --install Ubuntu-26.04
    
  6. 之后 Ubuntu 会要求你创建用户名密码

  7. 完成后退出,此时再使用 wsl -l -v 命令,看到 VERSION 一列显示为 2,就说明WSL 2 已成功安装并运行。

2.禁用C盘挂载

WSL 默认是能够访问 windows 系统里的文件的,会通过挂载的方式将 windows 系统中的盘符挂载到 /mnt 目录,如果觉得不安全,想禁用挂载的话,在 WSL 里执行:

sudo vim /etc/wsl.conf

写入:

[automount]
enabled = false #关闭自动挂载,默认挂载windows全部的文件

[interop]
appendWindowsPath = false # 默认关闭增加windows的path

在 CMD 中执行 wsl --shutdown,再重新打开 WSL。这样就关闭了挂载全部文件,如果还是需要一个通道,让wsl连接上windows的话,可以挂载指定 windows 指定文件夹。

# 短时间挂载:
sudo mount -t drvfs C:/Users/USER/Desktop/Project/ubuntu ~/desktop

# 永久挂载:
echo 'C:/Users/USER/Desktop/Project/ubuntu ~/desktop drvfs defaults 0 0' | sudo tee -a /etc/fstab

3.启用SSH

依旧采用 Tailscale 方案。在 WSL 里也装 Tailscale,使 WSL Ubuntu 会变成 Tailnet 里的一个独立设备,这样不用折腾 Windows 端口转发,也不怕 WSL 的 172.31.x.x 地址重启后变化。

在 WSL 上执行:

sudo apt update
sudo apt install -y curl openssh-server
curl -fsSL https://tailscale.com/install.sh | sh
sudo systemctl enable --now ssh
sudo systemctl enable --now tailscaled
sudo tailscale up --hostname=workstation-wsl

然后在其他机器上:

ssh 你的WSL用户名@workstation-wsl

4.关闭自动挂起

微软设计 WSL 的初衷是把它当做一个“用完即扔”的轻量级工具,所以默认只要没有打开的终端窗口,Windows 就会在几分钟后强制挂起(Suspend)WSL 的虚拟机来省内存。如果想让它常驻后台,可以通过以下配置来调整 WSL 的行为(但在某些 windows 环境下未必有效)。

1. 找到或创建配置文件:在Windows的文件资源管理器地址栏输入 %UserProfile% 并回车,进入你的用户文件夹。在这里新建一个名为 .wslconfig 的文件(默认情况下是没有的,如果已有则直接编辑)。

2. 写入配置:用记事本打开该文件,粘贴以下内容:

[wsl2]
vmIdleTimeout=-1

3. 重启 WSL:保存文件后,必须完全重启 WSL 才能让配置生效。在 PowerShell 或 CMD 中执行以下命令:

wsl --shutdown

之后再重新打开 WSL 终端,然后关闭,验证其状态是否一直为 running

如果上述方式无效的话可以使用终极方案:养一个幽灵进程,在终端配置文件里加几行代码,让它每次启动时自动在后台挂起一个完全不占资源的 sleep 进程。步骤如下所示:

  1. 打开 WSL 终端,编辑配置文件:
vim ~/.bashrc
  1. 在文件最末尾,另起一行加上这段代码:

    # 欺骗 WSL,防止关闭终端后系统自动休眠
    if ! pgrep -f "sleep infinity" > /dev/null; then
        nohup sleep infinity >/dev/null 2>&1 &
    fi
    
  2. 保存退出,然后执行 source ~/.bashrc 命令让它立刻生效。

  3. 然后在 powershell 中执行:

    powershell -c "Start-Process wsl.exe -WindowStyle Hidden; pause"
    
  • Start-Process wsl.exe -WindowStyle Hidden → 启动一个隐藏窗口的 WSL 进程。
  • pause → 让 PowerShell 窗口保持打开

这下,这个 sleep infinity 进程就会作为用户进程默默留在后台。无论怎么关闭终端窗口,WSL 都会因为这个进程的存在,判定“用户还在活跃”,从而乖乖地一直运行了!

评论