现已推出!阅读关于 11 月份新功能和修复的信息。

使用远程隧道进行开发

Visual Studio Code Remote - Tunnels 扩展允许您通过安全隧道连接到远程计算机,如台式 PC 或虚拟机 (VM)。您可以从任何地方的 VS Code 客户端连接到该计算机,而无需 SSH。

隧道技术通过 Microsoft 开发隧道安全地将数据从一个网络传输到另一个网络。

由于扩展直接在远程计算机上运行命令和其他扩展,因此可以消除 VS Code 客户端计算机上需要源代码的情况。

Remote Tunnels architecture overview

VS Code 可以提供**本地质量的开发体验** - 包括完整的 IntelliSense(代码补全)、代码导航和调试 - **无论您的代码托管在何处**。

入门

您可以使用两种路径来使用隧道

这两个路径都会产生相同的隧道功能 – 您可以使用最适合您的工具。如果您无法在远程计算机上安装完整的 VS Code 桌面,则 CLI 是一个很好的选择。如果您已经在 VS Code 中进行了一些工作,然后想为当前计算机启用隧道,则使用 VS Code 桌面 UI 很方便。

我们将在以下部分中描述这两种路径。

使用“code”CLI

您可以通过 code CLI 创建和使用隧道。

  1. 在您希望通过 VS Code 客户端进行开发的远程计算机上安装 code CLI。CLI 在 VS Code 客户端和您的远程计算机之间建立隧道。CLI 自动构建到 VS Code 桌面中 - 无需其他设置。

    其他下载

    或者,您可以通过我们下载页面上的 独立安装获取 CLI,该安装与 VS Code 桌面安装分开。

    VS Code download options with CLI highlighted

    您还可以通过远程计算机的终端安装和解压 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 开头。

  2. 使用 tunnel 命令创建安全隧道

    code tunnel
    

    此命令下载并在此计算机上启动 VS Code Server,然后为其创建隧道。

    注意:首次在计算机上启动隧道时,系统会提示您接受服务器许可条款。您也可以在命令行上传递 --accept-server-license-terms 以避免出现提示。

  3. 此 CLI 将输出一个与此远程计算机关联的 vscode.dev URL,例如 https://vscode.dev/tunnel/<machine_name>/<folder_name>。您可以在您选择的客户端上打开此 URL。

  4. 当首次在此客户端上打开 vscode.dev URL 时,系统会提示您在 https://github.com/login/oauth/authorize... URL 处登录您的 GitHub 帐户。这将向隧道服务验证您的身份,以确保您有权访问正确的远程计算机集。

使用 VS Code UI

  1. 在您希望启用隧道访问的远程计算机上打开 VS Code。

  2. 在 VS Code 帐户菜单中,选择 启用远程隧道访问 选项,如下面的图像所示。您也可以在 VS Code 中打开命令面板 (F1) 并运行命令 远程隧道:启用远程隧道访问...

    Turn on Remote Tunnel Access via the VS Code Account menu

  3. 系统会提示您登录 GitHub。登录后,隧道将在您当前的计算机上启动,您将能够远程连接到此计算机。

    Prompt that remote tunnel access is enabled

  4. 在您选择的客户端中,您可以从上面的通知中打开 vscode.dev 链接并开始编码!

注意:只有在 VS Code 在那里运行时,才能通过隧道访问远程计算机。一旦您退出 VS Code,将无法再将其隧道连接到那里,直到您再次在那里启动 VS Code 或运行 code tunnel CLI 命令。

远程隧道扩展

您通过 code CLI 或 VS Code UI 打开的 vscode.dev 实例预先安装了 Remote - Tunnels 扩展。

如果您已经在 VS Code(桌面或 Web)中工作,并且想要连接到远程隧道,您可以直接安装和使用 Remote - Tunnels 扩展。安装扩展后,打开命令面板 (F1) 并运行命令 远程隧道:连接到隧道。您将能够连接到任何具有活动隧道的远程计算机。

您还可以在远程资源管理器中查看您的远程计算机,您可以通过命令 远程资源管理器:聚焦于远程视图 将其聚焦。

Remote Explorer view with Tunnels

与其他远程开发扩展一样,您的远程计算机的名称将列在左下角的绿色远程指示器中。单击此指示器是浏览远程隧道命令的另一种方式,以及关闭远程连接或安装 VS Code 桌面的选项。

VS Code remote indicator connected to a remote tunnel

在容器中打开远程隧道主机上的文件夹

您可以将 Remote - Tunnels 和 Dev Containers 扩展一起使用,以在容器内打开远程主机上的文件夹。您甚至不需要在本地安装 Docker 客户端。

为此,请

  1. 按照 安装 步骤在您的远程主机和 VS Code 上安装 Docker 和 Dev Containers 扩展(在本地)。
  2. 按照 Remote - Tunnels 扩展的 入门 说明设置隧道、连接到该隧道并在那里打开一个文件夹。
  3. 使用命令面板中的 Dev Containers: Reopen in Container 命令(F1⇧⌘P(Windows,Linux Ctrl+Shift+P)。

其余的 Dev Containers 快速入门 照常适用。您可以在文档中了解更多关于 Dev Containers 扩展的信息。如果此模型不符合您的需求,您还可以查看在远程 Docker 主机上开发 文章以了解其他选项。

常见问题

Remote Tunnels、VS Code Server 和远程开发之间有什么关系?

Visual Studio Code 远程开发 允许您使用容器、远程计算机或 Windows Subsystem for Linux (WSL) 作为功能齐全的开发环境。

远程开发通过将某些命令的执行移动到“远程服务器”,即 VS Code Server,使您的本地 VS Code 安装可以透明地与另一台机器(无论是虚拟的还是物理的)上的源代码和运行时环境进行交互。当您连接到远程端点时,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 客户端,选择“远程资源管理器”视图,右键单击您要删除的计算机,然后选择“取消注册”。

隧道是如何保护的?

主机和连接到隧道都需要使用两端的同一 Github 或 Microsoft 帐户进行身份验证。在这两种情况下,VS Code 都会向 Azure 中托管的服务建立出站连接;通常不需要更改防火墙,并且 VS Code 不会设置任何网络侦听器。

从远程 VS Code 实例连接后,将在隧道上创建 SSH 连接,以提供端到端加密。当前首选的加密密码是 CTR 模式下的 AES 256,并且实现此加密的代码是开源的。

您可以在其文档中了解有关底层开发隧道服务安全性的更多信息。

隧道服务是否有使用限制?

为了避免滥用底层隧道服务,对隧道数量和带宽等资源施加了使用限制。我们预计大多数用户永远不会达到这些限制。

例如,现在您可以为您的帐户注册 10 个隧道。如果您想创建一个新隧道并且已经注册了其他 10 个隧道,则 CLI 将选择一个随机未使用的隧道并将其删除。请注意,此限制可能会更改。

如果您达到了限制并且想讨论获得更多使用量,我们很乐意了解更多信息。请通过 [email protected] 联系我们,并提供有关您的场景以及您需要多少使用量的信息。

我可以在我的组织中配置策略吗?

如果您是想控制端口转发访问权限的组织的一部分,您可以通过允许或拒绝访问域 global.rel.tunnels.api.visualstudio.com 来实现此目的。

对于运行 Windows 设备的 用户,您还可以配置然后部署开发隧道的组策略设置。您可以在开发隧道文档中了解更多信息。

如何确保我的隧道保持运行?

您有几个选项

  • 使用 service 命令作为服务运行。您可以运行 code tunnel service installcode tunnel service uninstall 来安装和删除它们。
  • 使用 no-sleep 选项, code tunnel --no-sleep,以防止您的远程计算机进入休眠状态。

code CLI 文档中所述,您可以通过 code tunnel --help 来探索所有可能的 CLI 命令和选项。

我可以在隧道传输时使用其他远程开发扩展或开发容器吗?

可以!目前,您可以通过 Remote - Tunnels 连接到 WSL开发容器