使用远程隧道进行开发
Visual Studio Code Remote - Tunnels 扩展允许你通过安全隧道连接到远程计算机,例如台式 PC 或虚拟机 (VM)。你可以从任何位置的 VS Code 客户端连接到该计算机,而无需 SSH。
隧道通过 Microsoft 开发隧道安全地传输数据从一个网络到另一个网络。
这可以消除 VS Code 客户端计算机上存在源代码的需求,因为该扩展直接在远程计算机上运行命令和其他扩展。该扩展将在远程操作系统上安装 VS Code Server;该服务器独立于远程操作系统上任何现有的 VS Code 安装。
无论你的代码托管在哪里,VS Code 都可以提供本地质量的开发体验 - 包括完整的 IntelliSense(代码补全)、代码导航和调试。
入门指南
你有两种使用隧道的方式:
- 运行
code
命令行界面 (CLI) 的tunnel
命令。 - 通过 VS Code Desktop UI 启用隧道。
这两种方式都会产生相同的隧道功能 - 你可以使用最适合你的工具。如果你无法在远程计算机上安装完整的 VS Code Desktop,则 CLI 是一个很好的选择。如果你已经在 VS Code 中进行一些工作,并且希望为当前计算机启用隧道,则使用 VS Code Desktop 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 时,系统将提示你登录到你的 GitHub 帐户,网址为
https://github.com/login/oauth/authorize...
URL。这会验证你的隧道服务身份,以确保你有权访问正确的远程计算机集。
使用 VS Code UI
-
在你想要启用隧道访问的远程计算机上打开 VS Code。
-
在 VS Code 帐户菜单中,选择启用远程隧道访问选项,如下面的图像所示。你也可以在 VS Code 中打开命令面板 (F1) 并运行命令远程隧道: 启用远程隧道访问...。
-
系统将提示你登录 GitHub。登录后,隧道将在你当前的计算机上启动,你将能够远程连接到此计算机。
-
在你选择的客户端中,你可以打开上面通知中的 vscode.dev 链接并开始编码!
注意: 只有当 VS Code 在远程计算机上保持运行时,才能通过隧道访问该计算机。一旦你退出 VS Code,在你再次在那里启动 VS Code 或运行
code tunnel
CLI 命令之前,将无法再隧道连接到它。
Remote Tunnels 扩展
你通过 code
CLI 或 VS Code UI 打开的 vscode.dev 实例预装了 Remote - Tunnels 扩展。
如果你已经在 VS Code (desktop 或 web) 中工作,并且想要连接到远程隧道,你可以直接安装和使用 Remote - Tunnels 扩展。安装扩展后,打开命令面板 (F1) 并运行命令远程隧道: 连接到隧道。你将能够连接到任何具有活动隧道的远程计算机。
你还可以在远程资源管理器中查看你的远程计算机,你可以通过命令远程资源管理器: 聚焦于远程视图来聚焦它
与其他远程开发扩展一样,你的远程计算机的名称将列在左下角的绿色远程指示器中。单击此指示器是探索远程隧道命令的另一种方式,以及关闭远程连接或安装 VS Code Desktop 的选项。
在容器中打开远程隧道主机上的文件夹
你可以将 Remote - Tunnels 和 Dev Containers 扩展一起使用,以在容器内打开远程主机上的文件夹。你甚至不需要在本地安装 Docker 客户端。
要做到这一点:
- 按照 安装 步骤在你的远程主机上安装 Docker,并在本地安装 VS Code 和 Dev Containers 扩展。
- 按照 入门指南 中的 Remote - Tunnels 扩展说明设置隧道,连接到它并在那里打开文件夹。
- 使用命令面板中的 Dev Containers: 在容器中重新打开 命令 (F1, ⇧⌘P (Windows, Linux Ctrl+Shift+P))。
其余的 Dev Containers 快速入门 照常适用。你可以在其文档中了解有关 Dev Containers 扩展的更多信息。如果此模型不符合你的需求,你还可以查看在远程 Docker 主机上开发文章以了解其他选项。
常见问题
Remote Tunnels、VS Code Server 和 Remote Development 之间有什么关系?
Visual Studio Code Remote Development 允许你使用容器、远程计算机或 Windows Subsystem for Linux (WSL) 作为功能齐全的开发环境。
Remote Development 使你的本地 VS Code 安装能够透明地与其他计算机(无论是虚拟机还是物理机)上的源代码和运行时环境进行交互,方法是将某些命令的执行移动到“远程服务器”,即 VS Code Server。当你连接到远程终结点时,VS Code Server 会快速安装,并且可以托管直接与远程工作区、计算机和文件系统交互的扩展。
我们已发布此 VS Code Server 后端组件作为你可以自己运行的服务(你可以在其文档中阅读更多相关信息),而不是仅由 Remote Development 扩展单独安装和管理。
访问 VS Code Server 涉及几个组件:
- VS Code Server:使 VS Code 远程体验成为可能的后端服务器。
- Remote - Tunnels 扩展:有助于连接到远程计算机的扩展,你在该计算机上运行服务器实例。
作为扩展作者,我需要做什么?
VS Code 扩展 API 抽象了本地/远程详细信息,因此大多数扩展无需修改即可工作。但是,鉴于扩展可以使用他们想要的任何节点模块或运行时,在某些情况下可能需要进行调整。我们建议你测试你的扩展以确保不需要更新。有关详细信息,请参阅支持远程开发。
多个用户或客户端可以同时访问同一个远程实例吗?
否,服务器的一个实例旨在一次由一个用户或客户端访问。
如何删除隧道或计算机?
如果你想停止通过 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 将选择一个随机未使用的隧道并将其删除。请注意,此限制可能会更改。
如果你达到了限制并希望讨论获得更多使用量,我们很乐意了解更多信息。请通过 vscodeserver@microsoft.com
联系我们,提供有关你的场景以及你需要多少使用量的信息。
我可以在我的组织中配置策略吗?
如果你是想要控制端口转发访问权限的组织的一部分,你可以通过允许或拒绝访问域 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 命令和选项。