remote-tunnels是最可行的远程开发方案,无需公网ip、ssh配置或端口映射,仅需vs code 1.82+、联网及microsoft账户登录;常见失败原因包括未登录microsoft账户、网络拦截tunnels.api.visualstudio.com或残留进程占用端口。

Remote-Tunnels 是目前最可行的方案——它不要求虚拟机有公网 IP、不依赖 SSH 配置、也不需要你在路由器上做端口映射。只要虚拟机装了 VS Code 1.82+、能联网、并登录 Microsoft 账户,就能从本地电脑一键连接。
Remote-Tunnels 在虚拟机上启动失败的常见原因
虚拟机里执行 Remote-Tunnels: Create Tunnel 后没反应,或状态栏一直显示 “Connecting…”,大概率是以下三类问题之一:
- VS Code 没登录 Microsoft 账户(不是 GitHub 或 Google):点击左下角「未登录」→「使用 Microsoft 账户登录」,用 Outlook/Hotmail 邮箱;已登录其他账户的,先点齿轮 →「帐户」→「注销」再重登
- 虚拟机网络策略拦截了 outbound 连接:
tunnelrelay.io:443必须可直连;企业环境或某些云平台(如阿里云默认安全组)会屏蔽该域名,需手动放行 - 残留进程占用了隧道端口:终端运行
pkill -f "code-tunnel"杀掉旧进程,再重试
为什么选 Remote-Tunnels 而不是 Remote-SSH?
Remote-SSH 要求你能 ssh 进虚拟机,而很多虚拟机(尤其是客户侧或内网隔离环境)根本不开 SSH 端口,或者禁用了密码登录。Remote-Tunnels 绕过了这层依赖:
- 它不走 SSH 协议,底层用的是加密 WebSocket(
wss://),只要能访问tunnels.api.visualstudio.com就行 - 虚拟机上无需配置密钥、无需开放任何端口、无需 sudo 权限安装 server
- 首次连接时,VS Code 自动在
~/.vscode-server下部署轻量服务,全程无 root 操作
连接后终端卡在 “Loading workspace…” 怎么办?
这不是网络慢,而是工作区上下文丢失了。Remote-Tunnels 共享的是「当前打开的文件夹」,不是整个系统:
- 确保在虚拟机上,是用
code /path/to/your/project打开的 VS Code 窗口,而不是空窗口再手动打开文件夹 - 如果虚拟机重启或 VS Code 关闭过,隧道进程可能已退出——回到虚拟机,重新执行
Remote-Tunnels: Create Tunnel - 本地连接时别用 vscode.dev 浏览器页去连(它只支持 Codespaces 场景);必须用本地安装的 VS Code,执行
Remote-Tunnels: Connect to Tunnel并选择对应设备
最容易被忽略的一点:Remote-Tunnels 的权限模型是账户级绑定,不是链接级。你生成的 URL(如 https://vscode.dev/tunnel/xxx)本身没有访问控制逻辑,能否打开完全取决于对方是否登录了同一个 Microsoft 账户。所以别指望靠“隐藏链接”来保护敏感项目——真要限制,得用 Remote-Tunnels: Manage Access 显式添加/撤销 GitHub 用户授权。











