本站点文档内容均翻译自code.visualstudio.com,仅供个人学习,如有差异请以官网为准。

使用远程隧道开发

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

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

这可以消除对源代码的需求,因为扩展在远程机器上直接运行命令和其他扩展,而无需将其保留在VS Code客户端机器上。扩展将在远程操作系统上安装VS Code服务器;服务器独立于远程操作系统上的任何现有VS Code安装。

远程隧道架构概述

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

入门指南

您有两条通过隧道上班的路径:

这两种方法都会实现相同的隧道功能——您可以使用任何最适合您的工具。如果您无法在远程机器上安装完整的 VS Code 桌面版,CLI 是一个很好的选择。如果您已经在 VS Code 中进行了一些工作,然后希望为当前机器启用隧道功能,使用 VS Code 桌面版 UI 会更方便。

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

使用 'code' 命令行界面

您可以通过创建和使用隧道代码 命令行界面.

  1. 安装代码在 VS Code 客户端上对远程机器进行开发的 CLI。CLI 在 VS Code 客户端和您的远程机器之间建立隧道。CLI 会自动集成到 VS Code 桌面版中 – 无需额外设置。

    备用下载

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

    VS Code 下载选项,突出显示 CLI 选项

    你也可以通过远程机器的终端安装和解压 CLI。这在你的远程机器没有图形用户界面 (UI) 时可能特别有用:

    curl -Lk 'https://code.visualstudio.com/sha/download?build=stable&os=cli-alpine-x64' --output vscode_cli.tar.gz
    
    tar -xf vscode_cli.tar.gz
    

    注意: 如果您使用的是独立版或终端安装,以下部分的命令将以 ./代码而不是代码输入:.

  2. 创建一个安全的隧道隧道命令:

    代码 隧道
    

    此命令在此机器上下载并启动 VS Code Server,然后创建一个到它的隧道。

    注意: 当您首次在一台机器上启动一个隧道时,系统会提示您接受服务器许可条款。您也可以通过 --接受服务器许可条款在命令行中使用以避免提示。

  3. 此 CLI 将输出一个与该远程机器关联的 vscode.dev URL,例如https://vscode.dev/tunnel/<机器名称>/<文件夹名称>您可以选择一个客户端打开这个URL。

  4. 当您首次在该客户端打开 vscode.dev URL 时,系统会提示您登录您的 GitHub 账户。https://github.com/login/oauth/authorize...URL。这将验证您对隧道服务的访问,以确保您有权访问正确的远程机器。

使用 VS Code 用户界面

  1. 在远程机器上打开 VS Code,您希望在那里启用隧道访问。

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

    通过 VS Code 账户菜单启用远程隧道访问

  3. 系统将提示您登录 GitHub。登录后,当前机器将启动一个隧道,您将能够远程连接到该机器。

    提示远程隧道访问已启用

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

注意: 只要 VS Code 在远程机器上保持运行状态,远程机器将只能通过隧道访问。一旦你退出 VS Code,将无法再通过隧道访问它,直到你再次启动 VS Code 或者运行 代码隧道CLI命令。

远程隧道扩展

您通过 vscode.dev 打开的实例代码CLI 或 VS Code UI 随 Remote - Tunnels 扩展一起预装。

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

您还可以在远程资源管理器中查看远程机器,您可以通过命令聚焦于此远程资源管理器:聚焦远程视图

远程资源管理器视图与隧道

和其他远程开发扩展一样,您的远程机器名称将列在左下角的绿色远程指示器中。点击此指示器是探索远程隧道命令的另一种方法,还可以关闭您的远程连接或安装VS Code桌面。

VS Code 远程指示器已连接到远程隧道

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

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

要这样做:

  1. 按照安装步骤在您的远程主机上安装Docker,并在本地安装VS Code和Dev Containers扩展。
  2. 按照入门说明来设置远程 - 隧道扩展以创建一个隧道,连接到它并在其中打开一个文件夹。
  3. 使用 开发容器:在容器中重新打开 命令从命令面板 (F1, ⇧⌘P (Windows, Linux Ctrl+Shift+P))。

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

常见问题

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

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

远程开发允许你的本地 VS Code 安装通过将某些命令的执行移动到名为 "远程服务器" 的 "VS Code 服务器" 透明地与另一台机器(无论是虚拟的还是物理的)上的源代码和运行时环境进行交互。当你连接到远程端点时,VS Code 会快速安装 VS Code 服务器,并且可以托管直接与远程工作区、机器和文件系统交互的扩展。

我们已经将这个 VS Code Server 后端组件作为你可以自己运行的服务(你可以在 其文档 中了解更多),而不是仅由远程开发扩展安装和管理。

访问 VS Code Server 涉及几个组件:

  • VS Code 服务器:使 VS Code 远程体验成为可能的后端服务器。
  • 远程 - 隧道扩展:此扩展有助于连接到远程机器,您在该机器上运行了服务器实例。

作为一名扩展作者,我需要做些什么?

VS Code 扩展 API 抽象掉了本地/远程的细节,因此大多数扩展在不修改的情况下应该可以正常工作。然而,由于扩展可以使用任何他们想要的 node 模块或运行时,存在需要进行调整的情况。我们建议您测试您的扩展,以确保不需要更新。请参阅支持远程开发了解详细信息。

多个用户或客户端可以同时访问同一远程实例吗?

不,服务器实例设计为一次只能被一个用户或客户端访问。

如何删除隧道或机器?

如果您想通过 CLI 停止正在运行的隧道,您可以使用 Ctrl + C 来结束活动的隧道。如果您通过 VS Code UI 启用了隧道功能,您可以在 VS Code 中运行命令 远程隧道:关闭远程隧道访问...

您可以通过运行来移除机器与隧道的关联代码隧道注销 在那台机器上。你也可以打开任何 VS Code 客户端,选择 Remote Explorer 视图,右键单击你想要移除的机器,并选择 取消注册

隧道是如何被保护的?

无论是托管还是连接到隧道,都需要在每一端使用相同的 Github 或 Microsoft 帐户进行身份验证。在这两种情况下,VS Code 都会向托管在 Azure 中的服务发起出站连接;通常不需要更改防火墙设置,VS Code 也不设置任何网络监听器。

一旦你从远程 VS Code 实例连接,就会通过隧道创建一个 SSH 连接,以提供端到端加密。目前这种加密推荐的密码是 AES 256 在 CTR 模式下,实现此代码的是 开源的.

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

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

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

例如,现在你可以为你的账户注册10个隧道。如果你想要创建一个新的隧道,但已经注册了10个其他隧道,CLI将随机选择一个未使用的隧道并删除它。请注意,这个限制可能会有所变化。

我可以为我的整个组织配置策略吗?

如果您是希望控制端口转发访问的组织的一部分,可以通过允许或禁止访问该域来实现。global.rel.tunnels.api.visualstudio.com输入:.

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

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

你有几种选择:

  • 使用服务命令以服务形式运行。你可以运行代码隧道服务安装代码隧道服务卸载安装和卸载它们。
  • 使用不睡眠选项代码隧道 --不睡眠, 以防止您的远程机器进入睡眠状态。

正如前面提到的代码 CLI 文档,您可以通过 探索所有可能的 CLI 命令和选项代码隧道 --help输入:.

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

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