Lazy loaded image
技术分享
[2026]如何从 Mac 通过 VS Code 远程连接 Windows 内部的 WSL 2 环境
字数 989阅读时长 3 分钟
2026-5-1
2026-5-1
type
Post
status
Published
date
May 1, 2026
slug
remote-mac-to-wsl2
summary
在多机办公场景中,一个常见痛点是:主力机是 Mac,但高性能的开发环境(例如深度学习、大规模编译)运行在 Windows 台式机WSL 2 之中。
tags
工具
category
技术分享
icon
password
URL

0. 引言

在多机办公场景中,一个常见痛点是:主力机是 Mac,但高性能的开发环境(例如深度学习、大规模编译)运行在 Windows 台式机WSL 2 之中。
你可能已经学会使用 VS Code 的 Remote-SSH 连接 Windows 宿主机,但当你发现代码实际位于 WSL 内部时,又会遇到 文件访问缓慢编译器路径不匹配 等问题。本文将拆解如何“穿透” Windows,让 Mac 上的 VS Code 直接“落地”到 WSL 2 内部。

1. 为什么这比想象中复杂?

WSL 2 使用基于 Hyper-V 的 NAT 网络架构。这意味着:
  • Windows 宿主机拥有局域网 IP(如 192.168.1.100)。
  • WSL 2 拥有一个只有 Windows 自己能看到的私有虚拟 IP(如 172.18.x.x)。
  • Mac 默认无法访问这个虚拟 IP。
要打破这道墙,业界主要有两种成熟方案:端口转发 (Port Forwarding)SSH 跳板 (Proxy Jump)

2. 核心配置:WSL 端的“接应”

首先,WSL 内部需要运行一个可供连接的服务。
  1. 安装并配置 SSH Server:在 WSL 终端中执行:
    1. sudo apt update && sudo apt install openssh-server
  1. 修改端口(关键):Windows 宿主机可能已占用 22 端口,建议为 WSL 指定一个特殊端口(如 2222)。编辑 sudo nano /etc/ssh/sshd_config
      • Port 2222
      • PasswordAuthentication yes (或配置 SSH Key)
      • ListenAddress 0.0.0.0
  1. 启动服务:
    1. sudo service ssh start

3. 方案 A:端口转发(最常用、最稳定)

这种方法的思路是告诉 Windows:“如果有来自局域网对 2222 端口的请求,请将它转发到 WSL。”

第一步:Windows 宿主机打通隧道

在 Windows 上以管理员身份打开 PowerShell,执行以下脚本:
# 获取 WSL 的内部 IP $wsl_ip = (wsl hostname -I).Trim() # 设置端口转发:监听宿主机的 2222,转发到 WSL 的 2222 netsh interface portproxy add v4tov4 listenport=2222 listenaddress=0.0.0.0 connectport=2222 connectaddress=$wsl_ip # 放行防火墙 New-NetFirewallRule -DisplayName "WSL SSH" -Direction Inbound -LocalPort 2222 -Protocol TCP -Action Allow

第二步:Mac 端 VS Code 连接

  1. 安装 Remote - SSH 插件。
  1. 在 Mac 的 ~/.ssh/config 中添加:
    1. Host win-wsl HostName [Windows的局域网IP] User [WSL里的用户名] Port 2222
  1. 连接 win-wsl,搞定。

4. 方案 B:SSH Proxy Jump(“跳板机”模式)

如果你的 Windows 已经开启了 OpenSSH Server(Windows 版),可以利用 SSH 的 跳板功能,直接从 Windows 宿主机“跳”进 WSL,而无需配置复杂的端口转发规则。
Mac 的 SSH Config 配置如下:
# 第一跳:进入 Windows 宿主机 Host win-host HostName 192.168.1.100 User win-user # 第二跳:从 Windows 内部跳入 WSL Host wsl-dev HostName localhost User wsl-user Port 2222 ProxyJump win-host
优点: 不需要每次更新 WSL IP,因为对 Windows 来说,WSL 始终在 localhost 附近。

5. 进阶:如何让连接“无感”?

  • 免密登录: 将 Mac 的公钥 (~/.ssh/id_rsa.pub) 分别加入 Windows 和 WSL 的 authorized_keys 中。
  • WSL 自动启动 SSH: 在 WSL 的 ~/.bashrc 末尾添加 sudo service ssh start
  • 处理 IP 变动: WSL 的虚拟 IP 每次重启都会变化。推荐在 Windows 计划任务中运行一个简单的 PowerShell 脚本,在启动时自动更新 netsh portproxy

6. 总结

让 Mac 上的 VS Code 连接 WSL 2 的本质是 “把 WSL 当作远程服务器对待”
  • 如果你追求极致性能更原生的体验,建议使用上述 SSH 方案,而不是简单的 Samba 共享文件或磁盘映射。
  • VS Code Remote Development 插件会在连接成功后自动在 WSL 内部安装 vscode-server,让你在 Mac 上也能享受完整 Linux 环境的智能补全与调试能力。

参考资源:

上一篇
抛弃向日葵,TailScale万物互联
下一篇
2026深度指南:利用 Mirrored Mode 构建 Mac 远程连接 WSL 2 的“即时唤醒”工作流