现已发布!阅读 10 月份的新功能和修复。

使用远程隧道进行开发

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

隧道通过 Microsoft dev tunnels 安全地传输数据,从一个网络到另一个网络。

这可以消除将源代码放在您的 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 实例预先安装了远程 - 隧道扩展。

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

您还可以在远程资源管理器中查看远程计算机,您可以通过命令远程资源管理器:聚焦远程视图来关注它。

Remote Explorer view with Tunnels

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

VS Code remote indicator connected to a remote tunnel

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

您可以将远程 - 隧道扩展和 开发容器 扩展结合使用,以在容器中打开远程主机上的文件夹。您甚至不需要在本地安装 Docker 客户端。

操作步骤

  1. 按照 安装 步骤在远程主机上安装 Docker,并在本地安装 VS Code 和开发容器扩展。
  2. 按照 入门 指示,为远程 - 隧道扩展设置隧道,连接到该隧道并在那里打开文件夹。
  3. 从命令面板(F1⇧⌘P (Windows, Linux Ctrl+Shift+P))使用开发容器:在容器中重新打开命令。

开发容器快速入门 的其余部分适用。您可以在其文档中详细了解 开发容器扩展。您还可以查看 在远程 Docker 主机上开发 文章,了解如果此模型不满足您的需求,其他选择。

常见问题

远程隧道、VS Code Server 和远程开发之间的关系是什么?

Visual Studio Code 远程开发 允许您使用容器、远程机器或 Windows Subsystem for Linux (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,实现此加密的代码是 开源 的。

您可以在其 文档 中了解有关底层 dev tunnels 服务安全的更多信息。

隧道服务的使用限制是什么?

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

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

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

我可以跨组织配置策略吗?

如果您是想要控制对端口转发的访问的组织的一部分,您可以通过允许或拒绝访问域 global.rel.tunnels.api.visualstudio.com 来做到这一点。

对于运行 Windows 设备的用户,您还可以配置并部署针对 dev tunnels 的组策略设置。您可以在 dev tunnels 文档 中了解更多信息。

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

您有几个选项。

  • 使用 service 命令以服务形式运行。您可以运行 code tunnel service installcode tunnel service uninstall 来安装和删除它们。
  • 使用 no-sleep 选项 code tunnel --no-sleep 来防止远程机器进入睡眠状态。

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

在进行隧道连接时,我可以使用其他远程开发扩展或开发容器吗?

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