创建和托管开发隧道/开发隧道命令行参考

分类:测试 |

创建和托管开发隧道

  • 开发隧道是一种功能强大的工具,可安全地将 localhost 打开到 Internet 并控制谁有权访问,因此可以轻松地从任意位置测试和调试 Web 应用和 Webhook。 创建、托管并连接到第一个开发隧道(以秒为单位)。

在本快速入门中,你将了解如何创建、托管和连接到第一个开发隧道(以秒为单位)。

安装

在创建开发隧道之前,首先需要下载并安装 devtunnel 与操作系统相对应的 CLI(命令行接口)工具。


Homebrew

可以使用 Homebrew 来安装和更新 devtunnel CLI。 以下命令可用于或不使用 --cask。

brew install --cask devtunnel
brew uninstall --cask devtunnel
brew upgrade --cask devtunnel
brew list --versions devtunnel

请注意,仅当之前安装了要查找的 Homebrew 版本时,以下命令才可用。 若要查看可用版本的列表,请运行以下命令。

brew switch --cask devtunnel <older_version>

脚本

curl -sL https://aka.ms/DevTunnelCliInstall | bash

直接下载链接:

macOS (arm64) - https://aka.ms/TunnelsCliDownload/osx-arm64-zip

macOS (x64) - https://aka.ms/TunnelsCliDownload/osx-x64-zip


登录

若要启动开发隧道,首先需要使用 Microsoft Entra ID、Microsoft 或 GitHub 帐户登录。 开发隧道不支持匿名托管隧道,有关详细信息,请参阅 CLI 命令参考 文档。

devtunnel user login

主机

登录后,可以使用命令开始托管开发隧道 host 。 在以下示例中,开发隧道将:

  • 在响应发送到它的请求的端口 8080 上运行本地服务器。

  • 为 Internet 可访问的本地端口 8080 托管开发隧道。

# Start a http server on port 8080 
devtunnel echo http -p 8080 
# Tunnel port 8080 
devtunnel host -p 8080

成功的 host 命令将类似于以下示例的内容输出到控制台。


Connecting to host tunnel relay wss://usw2-data.rel.tunnels.api.visualstudio.com/api/v1/Host/Connect/<tunnel_id> Hosting port 8080 at https://<tunnel_id>.usw2.devtunnels.ms:8080/, https://<tunnel_id>-8080.usw2.devtunnels.ms/ and inspect it at https:/<tunnel_id>-8080-inspect.usw2.devtunnels.ms/ Ready to accept connections for tunnel: <tunnel_id>

打印的文本包含:

  • tunnel_id - 开发隧道的 ID。

  • 公共 URL - 此示例中可用于访问开发隧道 https://<tunnel_id>.usw2.devtunnels.ms:8080/ 的 URL。

  • 检查 URL - 在此示例中,可用于检查通过开发隧道 https:/<tunnel_id>-8080-inspect.usw2.devtunnels.ms/ 发送的流量的 URL。

连接

若要连接到开发隧道,需要:

  1. 在 Web 浏览器中访问此 URL。

  2. 使用用于托管开发隧道的同一帐户登录。 默认情况下,开发隧道只能访问你。

祝贺你! 现在可以通过 Internet 访问本地服务。


开发隧道命令行参考

  • 项目

  • 2023/11/17
  • 3 个参与者

反馈

本文内容

  1. 全局选项

  2. 管理用户凭据

  3. 托管开发隧道

  4. 连接开发隧道

显示另外 6 个


开发隧道提供了用于创建和管理开发隧道的命令行接口(CLI)工具。 本文介绍各种 devtunnel CLI 命令的语法和参数。

 重要

此功能目前处于公开预览状态。 此预览版在提供时没有附带服务级别协议,不建议将其用于生产工作负荷。 某些功能可能不受支持或者受限。

 备注

devtunnel CLI 命令以预览版提供。 将来的版本中,命令名称和选项可能会更改。

全局选项

  • -v, --verbose:启用详细输出。

  • -?, -h, --help:显示帮助和使用情况信息。

管理用户凭据

开发隧道服务需要登录才能授权管理和访问开发隧道。 默认情况下,只有创建开发隧道的用户才能访问开发隧道,但该用户可能会向其他人授予访问权限。

登录后,登录令牌将缓存在系统安全密钥链中,并在过期前几天有效。 注销 CLI 会清除此缓存的令牌,但不会清除任何浏览器 Cookie。 如果浏览器用于通过开发隧道进行身份验证,则可能包括开发隧道访问令牌。

展开表

devtunnel user login使用 Microsoft 或 GitHub 帐户登录。
devtunnel user logout清除缓存的令牌
devtunnel user show显示当前登录状态

 提示

devtunnel login 以及 devtunnel logout 用于登录和注销的速记命令。

下面是有关使用这些命令的一些示例:

展开表

devtunnel user login使用 Microsoft 组织(Microsoft Entra ID)或个人帐户登录
devtunnel user login -g使用 GitHub 帐户登录
devtunnel user login -d如果无法通过本地交互式浏览器登录,请使用设备代码登录的 GitHub 帐户登录
devtunnel user login -g -d如果无法通过本地交互式浏览器登录,请使用设备代码登录的 GitHub 帐户登录

托管开发隧道

devtunnel host 是用于托管开发隧道的主命令。 应在运行要通过开发隧道访问的服务器的主机系统上运行该命令。

展开表

devtunnel host托管开发隧道。 如果未指定开发隧道 ID,则会创建一个新的 临时 开发隧道,该隧道在连接关闭后将被删除。

下面是有关使用此命令的一些示例:

展开表

devtunnel host -p 3000为在主机系统上侦听端口 3000 的服务器托管临时开发隧道。
devtunnel host -p 3000 --allow-anonymous托管临时开发隧道并启用匿名客户端访问。
devtunnel host -p 3000 5000为侦听端口 3000 和 5000 的本地服务器托管临时开发隧道。
devtunnel host -p 8443 --protocol https为使用 HTTPS 协议的端口 8443 上的服务器托管临时开发隧道。
devtunnel host -p 8000 --expiration 2d托管具有自定义过期时间的临时开发隧道。 最小值为 1 小时(1 小时),最大值为 30 天(30d)。
devtunnel host TUNNELID托管以前已配置的现有开发隧道。

 警告

允许匿名访问开发隧道意味着 Internet 上的任何人都可以连接到本地服务器(如果他们可以猜测开发隧道 ID)。

按 Control-C 停止开发隧道主机进程,并通过开发隧道终止任何客户端连接。 如果未提供现有开发隧道,进程自动创建的开发隧道将在进程退出时被删除。

连接开发隧道

使用 Web 转发 UI:

该 devtunnel host 命令显示类似于以下内容的输出:

Hosting port 3000 at https://l3rs99qw-3000.usw2.devtunnels.ms/

显示的 https: URI 对于开发隧道端口是唯一的:第一个组件是包含给定开发隧道 ID 和端口号的子域。

如果托管端口连接到 Web 服务器,则可以从任何位置直接在浏览器中打开该 URI。 如果访问开发隧道需要授权,则对 URI 的初始请求将重定向到登录页,并在用户获得授权后返回到站点。

如果托管端口连接到 Web 服务,则该 URI 可由 Web 服务客户端应用程序用作基 URI。 但是,如果开发隧道不允许匿名访问,则 Web 服务客户端通常不知道如何进行身份验证。 如果 Web 服务可以安全地公开,请考虑允许匿名访问。 否则,Web 服务客户端可能会添加具有开发隧道访问令牌的请求标头来授权连接。

使用 CLI:

CLI 可用于将客户端端口上的端口转发到开发隧道端口,而不是让客户端浏览器或应用程序直接连接到开发隧道中继 URI。 如果开发隧道不允许匿名访问,客户端可能还需要登录。

devtunnel connect TUNNELID
  • 替换为 TUNNELID 主机上使用的同一开发隧道 ID。

成功的客户端输出类似于以下内容:

Connected to tunnel: l3rs99qw SSH: Forwarding from 127.0.0.1:3000 to host port 3000. SSH: Forwarding from [::1]:3000 to host port 3000.

现在,在客户端上可以使用 localhost:3000 IPv4 或 IPv6 在主机上共享的服务器 3000。 (“SSH”前缀是因为开发隧道服务基于用于端口转发的标准 SSH 协议生成。如果托管端口连接到 Web 服务器, http://localhost:3000/ 则可以在浏览器中打开。 在这种情况下,无需进一步授权,因为客户端的 CLI 登录令牌用于在必要时授权连接。

高级:管理开发隧道

无需托管开发隧道即可创建开发隧道。 这对于高级开发隧道配置和管理非常有用,例如:

  • 列出所有拥有开发隧道

  • 添加和删除开发隧道的端口

  • 管理开发隧道访问控制

  • 将元数据添加到开发隧道,例如说明和标记

展开表

devtunnel create创建持久性开发隧道
devtunnel list列出开发隧道
devtunnel show显示开发隧道详细信息
devtunnel update更新开发隧道属性
devtunnel delete删除开发隧道
devtunnel delete-all删除所有开发隧道

下面是有关使用这些命令的一些示例:

展开表

devtunnel create -a创建允许匿名访问的持久性开发隧道。
devtunnel create -d 'my tunnel description'创建具有不可搜索说明的持久开发隧道。
devtunnel create --expiration 4h创建具有自定义过期时间的持久开发隧道。 最小值为 1 小时(1 小时),最大值为 30 天(30d)。
devtunnel create myTunnelID创建具有自定义隧道 ID 的持久开发隧道。
devtunnel create --tags my-web-app v1创建持久开发隧道并应用可搜索标记。
devtunnel list --tags my-web-app列出具有任何指定标记的开发隧道。
devtunnel list --all-tags my-web-app v1列出具有所有指定标记的开发隧道。
devtunnel show显示上次使用的开发隧道的详细信息。
devtunnel show TUNNELID显示开发隧道的详细信息。
devtunnel update TUNNELID -d 'my new tunnel description'更新开发隧道的说明。
devtunnel update TUNNELID --remove-tags从开发隧道中删除所有标记。
devtunnel update TUNNELID --expiration 10d使用新的自定义过期时间更新开发隧道。 最小值为 1 小时(1 小时),最大值为 30 天(30d)。
devtunnel delete TUNNELID删除开发隧道。
devtunnel delete-all删除所有开发隧道。

 提示

大多数 CLI 命令隐式地对上次使用的开发隧道进行操作,但如有必要,可以选择指定开发隧道 ID。

高级:管理开发隧道端口

最初使用 devtunnel create 命令创建的开发隧道没有端口。 使用 devtunnel port 命令在托管之前添加端口:

展开表

devtunnel port create创建开发隧道端口
devtunnel port list列出开发隧道端口
devtunnel port show显示开发隧道端口详细信息
devtunnel port update更新开发隧道端口属性
devtunnel port delete删除开发隧道端口

展开表

devtunnel port create -p 3000 --protocol http添加具有指定协议的端口
devtunnel port list TUNNELID列出当前端口
devtunnel port show TUNNELID -p 3000显示端口 3000 的详细信息
devtunnel port update -p 3000 --description 'frontend port'更新开发隧道端口说明
devtunnel port delete -p 3000删除端口

创建端口时,如果自动检测无法正常工作,则可以选择指定协议。 当前选项为“http”、“https”或“auto”(默认值)。 如果托管端口为 HTTPS,则建议将端口协议设置为“https”;否则,“auto”可能很好。

使用上述命令配置开发隧道后,开始托管它:

PowerShell复制

devtunnel host

高级:管理开发隧道访问

使用以下命令,可以颁发开发隧道访问令牌,以提供对开发隧道的其他客户端访问权限,而无需允许匿名访问。 访问控制项命令允许你在开发隧道和开发隧道端口上配置访问控制。

展开表

devtunnel token颁发开发隧道访问令牌
devtunnel access create创建访问控制项
devtunnel access list列出访问控制条目
devtunnel access delete删除访问控制项
devtunnel access reset将访问控制条目重置为默认值

下面是有关使用这些命令的一些示例:

展开表

devtunnel token TUNNELID --scopes connect获取可共享的开发隧道的“连接”访问令牌,以便暂时访问开发隧道。
devtunnel access create TUNNELID --anonymous在开发隧道上启用匿名客户端访问。
devtunnel access create TUNNELID --anonymous --expiration 4h使用自定义访问控制过期时间在开发隧道上启用匿名客户端访问。 最小值为 1 小时(1 小时),最大值为 30 天(30d)。
devtunnel access create TUNNELID --port 3000 --anonymous在端口 3000 上启用匿名客户端访问。
devtunnel access create TUNNELID --tenant在开发隧道上启用当前的 Microsoft Entra 租户访问。
devtunnel access create TUNNELID --org ORG在开发隧道上按名称启用 GitHub 组织访问。

 提示

GitHub 组织访问权限需要 将 Dev Tunnels GitHub 应用安装到组织

补充命令

如果需要显式设置或取消设置上次使用开发隧道的此本地缓存,可以使用这些命令。

展开表

devtunnel set设置默认开发隧道
devtunnel unset清除默认开发隧道

诊断命令

展开表

devtunnel clusters按位置列出可用的服务群集
devtunnel echo在本地端口上运行诊断回显服务器
devtunnel ping将诊断消息发送到远程回显服务器

展开表

devtunnel clusters --ping列出按度量延迟排序的可用服务群集。
devtunnel echo http --port 8080 --interface 127.0.0.1在端口 8080 上启动本地 http 诊断服务器。



参考网地址: 

  • https://learn.microsoft.com/zh-cn/azure/developer/dev-tunnels/get-started?tabs=linux

  • https://learn.microsoft.com/zh-cn/azure/developer/dev-tunnels/cli-commands