在 Windows 上进行 Linux 开发时,VSCode 的 WSL 与 SSH 模式是最常用的两种方案。选择哪种模式取决于你的代码运行位置和网络环境。
先说结论:WSL 适合本地 Windows 集成 Linux 环境,SSH 适合连接远程服务器,两者底层架构不同。
- 适用场景:WSL 用于本机子系统开发,SSH 用于云服务器或内网机器
- 配置重点:SSH 需配置密钥与网络连通,WSL 需安装子系统与扩展
- 运行位置:SSH 代码在远程运行,WSL 代码在本地虚拟化环境运行
核心区别对比
两者虽然体验相似,但底层机制差异明显,直接影响文件 IO 性能和网络依赖。
- 架构差异:SSH 模式通过协议连接远程 Linux 服务器,服务端进程部署在远程 ~/.vscode-server/;WSL 模式利用 Windows 子系统直接集成 Linux 内核,扩展运行在 WSL 内部。
- 文件系统:SSH 直接操作远程磁盘;WSL 可通过 /mnt 目录访问 Windows 文件,但跨文件系统操作性能有损耗。
- 网络依赖:SSH 依赖网络稳定性,断网无法开发;WSL 本地运行,无需网络即可编码编译。
SSH 模式配置要点(Windows 注意)
在 Windows 上配置 SSH 密钥时,原生 PowerShell 可能不支持 ssh-copy-id 命令。
1. 生成密钥
# 推荐使用 Git Bash 或 WSL 终端执行
ssh-keygen -t rsa -b 4096 -C "vscode-remote"2. 复制公钥
方法 A(Git Bash/WSL):
ssh-copy-id user@remote-host方法 B(Windows PowerShell 手动):
若上述命令报错,需手动将公钥内容追加到远程服务器的 ~/.ssh/authorized_keys 文件中。
3. 配置 SSH Config 模板
编辑本地 ~/.ssh/config 文件,简化连接命令:
Host my-serverHostName 192.168.1.100User rootPort 22IdentityFile ~/.ssh/id_rsaServerAliveInterval 60配置后,VSCode 连接时只需选择 Host 别名即可。
WSL 文件路径映射
WSL 模式下,Windows 磁盘会自动挂载到 /mnt 目录下,注意路径格式差异。
- C 盘路径:/mnt/c/Users/YourName/Project
- D 盘路径:/mnt/d/Work/Code
性能建议:尽量将代码存放在 WSL 文件系统内(如 ~/project),避免在 /mnt/c 下运行 npm install 或编译大型项目,IO 性能会显著下降。
验证连接状态
连接成功后,通过以下方式确认当前环境:
- 状态栏:SSH 模式显示远程主机名或 IP;WSL 模式显示 WSL: Ubuntu 字样。
- 终端命令:输入
uname -a。SSH 模式返回远程服务器内核信息;WSL 模式返回包含 Microsoft 字样的内核信息。 - 文件访问:WSL 模式下可直接访问 /mnt 目录对应的 Windows 盘符。
常见工程坑
- SSH 密钥权限:私钥文件权限需设置为 600,否则报错 Permission denied。命令:
chmod 600 ~/.ssh/id_rsa。 - WSL 路径混淆:不要在 Windows 资源管理器中直接修改 WSL 内部文件(\\wsl$),可能导致权限混乱,建议在 VSCode 内操作。
- 服务端版本:VSCode 更新后,远程 ~/.vscode-server 可能需重新下载,若网络不佳会导致连接卡住,可手动清理该目录重试。
原文链接:https://www.zjcp.cc/ask/11728.html
