使用远程隧道进行开发
Visual Studio Code 的 远程 - 隧道 扩展允许您通过安全隧道连接到远程计算机,例如台式 PC 或虚拟机 (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 客户端连接进行开发的远程计算机上安装
code
CLI。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 帐户菜单中,选择开启远程隧道访问选项,如下图所示。您还可以在 VS Code 中打开命令面板 (F1) 并运行命令远程隧道:开启远程隧道访问...。
-
系统会提示您登录 GitHub。登录后,隧道将在您当前的计算机上启动,您将能够远程连接到此计算机。
-
在您选择的客户端中,您可以打开上述通知中的 vscode.dev 链接并开始编码!
注意:远程计算机只有在 VS Code 仍在运行的情况下才能通过隧道访问。一旦退出 VS Code,就无法再通过隧道访问,除非您再次在该计算机上启动 VS Code 或运行
code tunnel
CLI 命令。
远程隧道扩展
您通过 code
CLI 或 VS Code UI 打开的 vscode.dev 实例已预装远程 - 隧道扩展。
如果您已经在 VS Code(桌面版或 Web 版)中工作,并希望连接到远程隧道,可以直接安装并使用 远程 - 隧道 扩展。安装扩展后,打开命令面板 (F1) 并运行命令远程隧道:连接到隧道。您将能够连接到任何具有活动隧道的远程计算机。
您还可以在远程资源管理器中查看您的远程计算机,您可以通过命令远程资源管理器:聚焦远程视图来使其获得焦点
与其他远程开发扩展一样,您的远程计算机名称将显示在左下角的绿色远程指示器中。单击此指示器是探索远程隧道命令的另一种方式,同时还提供关闭远程连接或安装 VS Code 桌面版的选项。
在容器中打开远程隧道主机上的文件夹
您可以同时使用远程 - 隧道和 开发容器 扩展,在容器内打开远程主机上的文件夹。您甚至不需要在本地安装 Docker 客户端。
为此
- 按照 安装 步骤在远程主机上安装 Docker,并在本地安装 VS Code 和开发容器扩展。
- 按照远程 - 隧道扩展的 入门 说明设置隧道,连接到它并在其中打开一个文件夹。
- 使用命令面板 (F1, ⇧⌘P (Windows、Linux Ctrl+Shift+P)) 中的开发容器:在容器中重新打开命令。
开发容器快速入门的其余部分照常适用。您可以在其文档中了解有关开发容器扩展的更多信息。如果此模式不符合您的需求,您还可以查看在远程 Docker 主机上进行开发一文以了解其他选项。
常见问题
远程隧道、VS Code Server 和远程开发之间的关系是什么?
Visual Studio Code 远程开发允许您使用容器、远程计算机或适用于 Linux 的 Windows 子系统 (WSL) 作为功能齐全的开发环境。
远程开发允许您的本地 VS Code 安装通过将某些命令的执行转移到“远程服务器”——即 VS Code Server,透明地与远程机器(无论是虚拟还是物理)上的源代码和运行时环境进行交互。当您连接到远程端点时,VS Code 会快速安装 VS Code Server,并且它可以托管直接与远程工作区、机器和文件系统交互的扩展。
我们已将此 VS Code Server 后端组件作为您可以自行运行的服务发布(您可以在其文档中了解更多信息),而不再仅由远程开发扩展进行安装和管理。
访问 VS Code Server 涉及以下几个组件
- VS Code Server:使 VS Code 远程体验成为可能的后端服务器。
- 远程 - 隧道扩展:促进连接到远程计算机的扩展,在该计算机上运行着一个服务器实例。
作为扩展作者,我需要做什么?
VS Code 扩展 API 抽象了本地/远程细节,因此大多数扩展无需修改即可工作。然而,考虑到扩展可以使用任何 Node 模块或运行时,在某些情况下可能需要进行调整。我们建议您测试您的扩展,以确保无需更新。详细信息请参阅支持远程开发。
多个用户或客户端可以同时访问同一个远程实例吗?
不能,服务器的实例设计为一次只能由一个用户或客户端访问。
如何移除隧道或计算机?
如果您想停止通过 CLI 运行的隧道,可以使用 Ctrl + C 结束活动隧道。如果您通过 VS Code UI 启用了隧道功能,可以在 VS Code 中运行命令远程隧道:关闭远程隧道访问...。
您可以通过在该计算机上运行 code tunnel unregister
来移除其与隧道功能的关联。您还可以打开任何 VS Code 客户端,选择远程资源管理器视图,右键单击要移除的计算机,然后选择注销。
隧道如何保障安全?
托管和连接隧道都需要使用相同的 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 命令和选项。