VS Code 不能直接连虚拟机,需通过 Remote-SSH(Linux/WSL/macOS 虚拟机)或 Remote-WSL(本地 WSL)扩展实现;连不上多因虚拟机未装/启 SSH、防火墙拦截、NAT 未端口转发或网络不通。

VS Code 能不能直接连虚拟机
不能。VS Code 本身不是 SSH 客户端,也不内置虚拟机管理功能;它靠扩展实现远程连接,核心路径只有两条:Remote-SSH(连 Linux/WSL/macOS 虚拟机)或 Remote-WSL(专连 Windows 子系统)。Windows 上的 Hyper-V、VMware 或 VirtualBox 虚拟机,只要开了 SSH 服务且网络通,就归到 Remote-SSH 管;本地 WSL 则优先用 Remote-WSL。
Remote-SSH 连不上虚拟机的常见原因
90% 的失败不是 VS Code 问题,而是虚拟机侧没配好 SSH 或网络不通:
- 虚拟机没装
openssh-server(Ubuntu/Debian)或没启用sshd服务(sudo systemctl enable --now ssh) - 防火墙拦了 22 端口(
sudo ufw allow 22或关防火墙临时测试) - 虚拟机网络模式是 NAT 但没做端口转发(VirtualBox/VMware 需手动映射主机 2222 → 虚拟机 22)
- 主机连虚拟机 IP 都 ping 不通(先在主机终端执行
ssh user@192.168.x.x测试,通了 VS Code 才可能连上)
配置 Remote-SSH 连接的具体步骤
别点“远程资源管理器”里乱填,按顺序来:
- 确保已安装官方扩展
Remote - SSH(不是“SSH FS”或“SSH Remote”等第三方) - 按下
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入Remote-SSH: Connect to Host... - 选
Configure SSH Hosts...→ 选配置文件(如~/.ssh/config)→ 添加类似以下内容:
Host my-vm
HostName 192.168.56.101
User ubuntu
Port 22
IdentityFile ~/.ssh/id_rsa
保存后,再用 Remote-SSH: Connect to Host... 选 my-vm 即可。第一次连接会自动上传 VS Code Server 到虚拟机的 ~/.vscode-server 目录。
连上后文件权限和路径要注意什么
VS Code 启动的终端、调试器、任务都运行在虚拟机环境里,所有路径、权限、环境变量都是虚拟机的,不是你本机的:
- 打开的文件路径显示为
/home/ubuntu/project,不是C:\Users\...\project -
python命令调用的是虚拟机里的解释器,不是本机的;pip install装的包也只在虚拟机生效 - 如果用
sudo code .连,会导致 VS Code Server 写入 root 目录,后续普通用户无法升级或启动,必须删掉~/.vscode-server并重连 - 共享文件夹(如 VirtualBox Guest Additions 或 VMware Tools 挂载的
/media/sf_XXX)默认不可写,需把当前用户加进vboxsf组(sudo usermod -aG vboxsf $USER)
真正麻烦的从来不是怎么连,而是连上之后忘了自己操作的是另一台机器——改错配置、装错依赖、删错日志,都是因为下意识当成本地环境用了。










