使用远程隧道 (Remote Tunnels) 进行开发
Visual Studio Code 的 Remote - Tunnels 扩展允许您通过安全隧道连接到远程机器(如台式机或虚拟机 (VM))。您可以从任何地方的 VS Code 客户端连接到该机器,而无需使用 SSH。
隧道通过 Microsoft 开发隧道 (dev tunnels) 安全地将数据从一个网络传输到另一个网络。
这消除了在 VS Code 客户端机器上保留源代码的需要,因为该扩展直接在远程机器上运行命令和其他扩展。该扩展会在远程操作系统上安装 VS Code Server;该服务器独立于远程操作系统上现有的任何 VS Code 安装。

无论您的代码托管在哪里,VS Code 都能提供本地质量的开发体验——包括完整的 IntelliSense(自动补全)、代码导航和调试。
开始使用
您有两种使用隧道的方法:
- 运行
code命令行界面 (CLI) 的tunnel命令。 - 通过 VS Code 桌面版 UI 启用隧道。
这两种方法都能实现相同的隧道功能——您可以根据自己的习惯选择最合适的工具。如果您无法在远程机器上安装完整的 VS Code 桌面版,CLI 是一个很好的选择。如果您已经在 VS Code 中进行工作,并希望为当前机器启用隧道,使用 VS Code 桌面版 UI 则非常方便。
我们将在以下章节中介绍这两种方法。
使用 'code' 命令行界面 (CLI)
您可以通过 code CLI 创建和使用隧道。
-
在您希望从 VS Code 客户端进行开发的远程机器上安装
codeCLI。CLI 会在 VS Code 客户端和您的远程机器之间建立隧道。CLI 已自动内置于 VS Code 桌面版中,无需额外设置。其他下载方式
或者,您可以通过下载页面上的 独立安装程序 获取 CLI,它与 VS Code 桌面版安装是分开的。

您也可以通过远程机器的终端安装并解压 CLI。如果您的远程机器没有 UI,这会特别有用。
curl -Lk 'https://vscode.js.cn/sha/download?build=stable&os=cli-alpine-x64' --output vscode_cli.tar.gz tar -xf vscode_cli.tar.gz注意:如果您使用的是独立安装或终端安装,后续章节中的命令将以
./code开头,而不是code。 -
使用
tunnel命令创建安全隧道code tunnel该命令会在当前机器上下载并启动 VS Code Server,然后为其创建隧道。
注意:首次在机器上启动隧道时,系统会提示您接受服务器许可条款。您也可以在命令行中传入
--accept-server-license-terms以避免该提示。 -
此 CLI 将输出一个绑定到该远程机器的 vscode.dev URL,例如
https://vscode.dev/tunnel/<machine_name>/<folder_name>。您可以在选择的客户端上打开此 URL。 -
在此客户端上首次打开 vscode.dev URL 时,系统会提示您在
https://github.com/login/oauth/authorize...URL 处登录您的 GitHub 帐户。这会对您进行隧道服务身份验证,以确保您拥有访问相应远程机器的权限。
使用 VS Code UI
-
在您想要开启隧道访问权限的远程机器上打开 VS Code。
-
在 VS Code 的“帐户”菜单中,选择开启远程隧道访问 (Turn on Remote Tunnel Access),如下图所示。您也可以在 VS Code 中打开命令面板 (F1) 并运行命令远程隧道: 开启远程隧道访问... (Remote Tunnels: Turn on Remote Tunnel Access...)。

-
系统会提示您登录 GitHub。登录后,隧道将在当前机器上启动,您就可以远程连接到这台机器了。

-
在您选择的客户端中,打开上述通知中的 vscode.dev 链接即可开始编码!
注意:远程机器仅在 VS Code 运行期间可通过隧道访问。一旦您退出 VS Code,将无法再通过隧道连接到它,除非您再次在远程机器上启动 VS Code 或运行
code tunnelCLI 命令。
Remote Tunnels 扩展
通过 code CLI 或 VS Code UI 打开的 vscode.dev 实例已预装 Remote - Tunnels 扩展。
如果您已经在 VS Code(桌面版或 Web 版)中工作,并希望连接到远程隧道,可以直接安装并使用 Remote - Tunnels 扩展。安装扩展后,打开命令面板 (F1) 并运行命令远程隧道: 连接到隧道 (Remote Tunnels: Connect to Tunnel)。您将能够连接到任何拥有活动隧道的远程机器。
您还可以在“远程资源管理器”中查看您的远程机器,可以通过运行命令远程资源管理器: 聚焦远程视图 (Remote Explorer: Focus on Remote View) 来聚焦该视图。

与其他远程开发扩展一样,您的远程机器名称将显示在左下角的绿色远程指示器中。点击该指示器是探索远程隧道命令的另一种方式,同时也提供了关闭远程连接或安装 VS Code 桌面版的选项。

在容器中打开远程隧道主机上的文件夹
您可以同时使用 Remote - Tunnels 和 Dev Containers 扩展,在远程主机上的容器内打开文件夹。您甚至不需要在本地安装 Docker 客户端。
操作步骤如下:
- 按照 安装说明 在远程主机上安装 Docker,并在本地安装 VS Code 和 Dev Containers 扩展。
- 按照 Remote - Tunnels 扩展的 入门指南 设置隧道、进行连接并在其中打开文件夹。
- 从命令面板(F1,⇧⌘P (Windows, Linux Ctrl+Shift+P))使用 开发容器:在容器中重新打开 命令。
Dev Containers 快速入门的其余部分按原样适用。您可以在 Dev Containers 扩展文档中了解更多信息。如果此模型无法满足您的需求,您还可以参考 在远程 Docker 主机上进行开发 一文了解其他选项。
常见问题
Remote Tunnels、VS Code Server 和远程开发之间的关系是什么?
Visual Studio Code 远程开发 (Remote Development) 允许您将容器、远程机器或适用于 Linux 的 Windows 子系统 (WSL) 用作功能完备的开发环境。
远程开发使您的本地 VS Code 安装能够通过将某些命令的执行转移到“远程服务器”(即 VS Code Server),透明地与远程机器(无论是虚拟的还是物理的)上的源代码和运行时环境进行交互。当您连接到远程终端节点时,VS Code 会快速安装 VS Code Server,该服务器可以托管直接与远程工作区、机器和文件系统交互的扩展。
我们已经将此 VS Code Server 后端组件发布为一个您可以自行运行的服务(您可以在其文档中阅读更多相关信息),而不是仅由远程开发扩展来安装和管理它。
访问 VS Code Server 涉及几个组件:
- VS Code Server:使 VS Code 远程体验成为可能的后端服务器。
- Remote - Tunnels 扩展:促进与远程机器连接的扩展,在该机器上您运行着该服务器的一个实例。
作为扩展作者,我需要做什么?
VS Code 扩展 API 抽象了本地/远程细节,因此大多数扩展无需修改即可工作。但是,考虑到扩展可以使用它们想要的任何节点模块或运行时,有时可能需要进行调整。我们建议你测试你的扩展,以确保不需要更新。有关详细信息,请参阅支持远程开发。
多个用户或客户端可以同时访问同一个远程实例吗?
不可以,服务器实例旨在供单个用户或客户端在同一时间访问。
如何移除隧道或机器?
如果您想停止通过 CLI 运行的隧道,可以使用 Ctrl + C 终止活动的隧道。如果您通过 VS Code UI 启用了隧道,可以在 VS Code 中运行命令远程隧道: 关闭远程隧道访问... (Remote Tunnels: Turn off Remote Tunnel Access...)。
您可以通过在该机器上运行 code tunnel unregister 来移除机器与隧道的关联。您也可以打开任何 VS Code 客户端,选择“远程资源管理器”视图,右键点击想要移除的机器,然后选择取消注册 (unregister)。
隧道是如何保护安全的?
托管和连接隧道都需要在两端使用同一个 GitHub 或 Microsoft 帐户进行身份验证。在这两种情况下,VS Code 都会向托管在 Azure 中的服务发起出站连接;通常无需更改防火墙,且 VS Code 不会设置任何网络监听器。
一旦您从远程 VS Code 实例连接,隧道上会创建一条 SSH 连接以提供端到端加密。目前此加密的首选密码是 CTR 模式下的 AES 256,实现此功能的代码是 开源的。
您可以在其 文档 中详细了解底层开发隧道服务的安全性。
隧道服务是否有使用限制?
为了防止滥用底层隧道服务,对隧道数量和带宽等资源设有使用限制。我们预计大多数用户永远不会达到这些限制。
例如,目前您的帐户可以注册 10 个隧道。如果您想创建新隧道但已注册了 10 个,CLI 将随机选择一个未使用的隧道并将其删除。请注意,此限制可能会有变动。
我可以在组织内配置策略吗?
如果您所在的组织希望控制端口转发的访问权限,可以通过允许或拒绝访问域名 global.rel.tunnels.api.visualstudio.com 来实现。
对于使用 Windows 设备的用户,您还可以配置并部署开发隧道的组策略设置。您可以在 开发隧道文档 中了解更多信息。
如何确保隧道保持运行?
您有几种选择:
- 使用
service命令作为服务运行。您可以运行code tunnel service install和code tunnel service uninstall来安装和移除服务。 - 使用
no-sleep选项,即code tunnel --no-sleep,以防止您的远程机器进入睡眠状态。
如 code CLI 文档中所述,您可以通过 code tunnel --help 探索所有可能的 CLI 命令和选项。