使用远程隧道进行开发
Visual Studio Code Remote - Tunnels 扩展允许您通过安全的隧道连接到远程计算机,例如台式电脑或虚拟机 (VM)。您可以在任何地方使用 VS Code 客户端连接到该计算机,无需 SSH。
通过 Microsoft dev tunnels,隧道可以将数据安全地从一个网络传输到另一个网络。
这可以消除源文件必须位于您的 VS Code 客户端计算机上的需要,因为该扩展直接在远程计算机上运行命令和其他扩展。该扩展将在远程操作系统上安装 VS Code Server;该服务器独立于远程操作系统上任何现有的 VS Code 安装。
VS Code 可以提供本地质量的开发体验 - 包括完整的智能感知(代码补全)、代码导航和调试 - 无论您的代码托管在哪里。
入门
有两种使用隧道的方式
- 运行
code
命令行界面 (CLI) 的tunnel
命令。 - 通过 VS Code 桌面 UI 启用隧道。
这两种方式都可以实现相同的隧道功能 - 您可以使用最适合您的工具。如果您无法在远程计算机上安装完整的 VS Code Desktop,CLI 是一个很好的选择。如果您已经在 VS Code 中进行一些工作,然后想为当前计算机启用隧道,使用 VS Code 桌面 UI 会很方便。
我们将在下面的部分中介绍这两种方式。
使用 'code' CLI
您可以通过 code
CLI 创建和使用隧道。
-
在您希望从 VS Code 客户端连接进行开发的远程计算机上安装
code
CLI。CLI 会在 VS Code 客户端和您的远程计算机之间建立隧道。CLI 已自动内置到 VS Code Desktop 中 - 无需额外设置。其他下载方式
或者,您可以在我们的下载页面通过独立安装包获取 CLI,它独立于 VS Code Desktop 安装。
您也可以通过远程计算机的终端安装和解压 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 实例会预装 Remote - Tunnels 扩展。
如果您已在 VS Code(桌面版或 Web 版)中工作并希望连接到远程隧道,可以直接安装并使用 Remote - Tunnels 扩展。安装扩展后,打开命令面板 (F1) 并运行命令远程隧道: 连接到隧道。您将能够连接到任何已启用活动的隧道的远程计算机。
您还可以在远程资源管理器中查看您的远程计算机,您可以通过命令远程资源管理器: 聚焦远程视图来聚焦它。
与其他远程开发扩展一样,您的远程计算机名称会显示在左下方绿色的远程指示器中。点击此指示器是另一种探索远程隧道命令的方式,同时还有关闭远程连接或安装 VS Code Desktop 的选项。
在容器中打开远程隧道主机上的文件夹
您可以将 Remote - Tunnels 和 开发容器 扩展一起使用,在容器内打开远程主机上的文件夹。您甚至不需要在本地安装 Docker 客户端。
操作步骤
- 按照安装步骤在您的远程主机上安装 Docker,并在本地安装 VS Code 和开发容器扩展。
- 按照 Remote - Tunnels 扩展的入门说明设置隧道,连接到它并在那里打开文件夹。
- 从命令面板 (F1, ⇧⌘P (Windows, Linux Ctrl+Shift+P)) 使用 开发容器: 在容器中重新打开 命令。
开发容器快速入门的其余部分照常适用。您可以在开发容器扩展的文档中了解更多信息。如果此模型不符合您的需求,您还可以查看在远程 Docker 主机上进行开发一文以获取其他选项。
常见问题
远程隧道、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 抽象了本地/远程细节,因此大多数扩展无需修改即可工作。但是,由于扩展可以使用任何 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,实现此功能的代码是开源的。
您可以在 dev tunnels 文档中了解有关底层 dev tunnels 服务安全性的更多信息。
隧道服务是否有使用限制?
为了避免滥用底层隧道服务,对隧道数量和带宽等资源设置了使用限制。我们预计大多数用户不会达到这些限制。
例如,目前您的帐户最多可以注册 10 个隧道。如果您想创建新隧道但已经注册了 10 个其他隧道,CLI 将随机选择一个未使用的隧道并将其删除。请注意,此限制可能会发生变化。
我可以在我的组织中配置策略吗?
如果您所在的组织希望控制端口转发的访问权限,您可以通过允许或拒绝访问域名 global.rel.tunnels.api.visualstudio.com
来实现。
对于运行 Windows 设备的用户,您还可以配置并部署 dev tunnels 的组策略设置。您可以在 dev tunnels 文档中了解更多信息。
如何确保我的隧道保持运行?
您有几种选择
- 使用
service
命令作为服务运行。您可以运行code tunnel service install
和code tunnel service uninstall
来安装和移除它们。 - 使用
no-sleep
选项,code tunnel --no-sleep
,以防止您的远程计算机进入休眠状态。
正如code
CLI 文档中提到的,您可以通过 code tunnel --help
探索所有可能的 CLI 命令和选项。