devtunnel 是一个用于管理开发者隧道(developer tunnels)的命令行工具。开发者隧道通常用于将本地计算机上的服务暴露到公共互联网或特定网络中,以便开发人员可以在开发和调试过程中访问这些服务。这些命令允许用户管理隧道的创建、更新、删除,设置访问控制、生成访问令牌以及管理用户和端口设置等。每个命令均支持多种选项,以便用户根据需要配置和管理其隧道服务。

创建和托管隧道 - Microsoft dev tunnels | Microsoft Learn

devtunnel(Microsoft Dev Tunnels CLI)完整解构

一、基础定位

Dev Tunnels:微软 Azure 开发隧道服务,一套反向中继型内网穿透系统
 
devtunnel.exe / devtunnel 是官方独立 CLI 客户端;同时内置在 VS Code code tunnel 子命令中(同一套底层tunnels Rust 库)。
 
本质:出站长连接反向隧道,不需要内网开放入站端口,所有连接由本地 Agent 主动向外发起,流量经过微软全球 Azure 中继节点中转。
对标产品:ngrok、cloudflared、frp;区别:托管中继由微软运营、深度绑定 Microsoft 账号 / GitHub 账号、原生适配 VS Code 远程开发。

核心术语定义

  1. Tunnel Host(宿主机 Agent):运行devtunnel host、位于内网,主动连接云端中继;接收中继转发流量,转发至本地端口。
  2. Relay Service(云端中继):Azure 全球边缘节点 devtunnels.ms;控制平面 + 流量中转平面。
  3. Tunnel Client(访问端):浏览器、第三方程序、vscode.dev、外部服务(Webhook 回调)。
  4. Tunnel:逻辑隔离隧道实例,拥有唯一tunnel-id;一个隧道可绑定多个本地端口,独立访问控制策略。
  5. Control Plane:账号认证、隧道元数据管理、权限下发、心跳信令通道。
  6. Data Plane:用户业务流量加密隧道。

二、底层架构分层

plaintext
【客户端浏览器/外部程序】
        ↓ HTTPS
【Azure中继网关 devtunnels.ms】
├─控制平面(WebSocket/TLS1.3) ←──→ devtunnel Agent(信令、认证、心跳)
└─数据平面(加密双向流)       ←──→ devtunnel Agent(业务流量转发)
                                        ↓
                                本地TCP转发 → 内网服务 localhost:xxxx

三、底层原理与完整链路流程

3.1 核心模型:反向中继(无入站端口)

传统端口映射:公网主动向内网发起连接;
 
DevTunnel:内网 Agent 主动向外建立持久加密长连接到微软中继;外部访问流量抵达中继,通过已存在长连接反向推送至内网 Agent。
 
防火墙 / NAT 只会拦截入站连接,不会拦截内网主动发起的出站连接,这是穿透核心原理。

3.2 完整握手建立流程

  1. 账号认证阶段
     
    devtunnel user login
     
    Agent 通过 OAuth2 设备码流程,向微软 AAD 认证服务获取访问令牌(EntraID / 微软账号 / GitHub);令牌用于后续调用隧道管理 API、接入中继。
  2. 隧道创建 / 加载元数据
     
    devtunnel create 创建持久隧道;或devtunnel host <tunnel-id>接入已有隧道。
     
    REST API 调用 Azure DevTunnels 控制平面,登记隧道 ID、端口列表、访问策略(匿名 / 租户 / 私有)。
  3. Agent 与中继建立两条逻辑通道(TLS1.3 加密)
  • 控制通道(WebSocket over TLS)
     
    承载信令:隧道保活心跳、端口变更通知、连接事件、权限校验、重连协商;永久在线,断线自动指数退避重连(5s~120s)。
  • 数据通道(多路复用加密流)
     
    承载业务流量;协议内部采用MessagePack RPC 二进制帧协议(Protocol Version 4),实现多连接多路复用。
  1. 外部用户发起访问(https://xxx-3000.devtunnels.ms
     
    ① 请求到达 Azure 边缘中继,中继校验隧道是否存在、访问权限;
     
    ② 权限校验通过,分配一条双向流通道;
     
    ③ 通过已存在的 Agent 长连接,将请求帧下发内网 Agent;
     
    ④ Agent 收到流量,发起本地 TCP 连接 127.0.0.1:port
     
    ⑤ 本地服务响应 → Agent 封装帧 → 中继 → 返回外部客户端;

3.3 协议栈细节

  1. 外层传输:TCP + TLS1.3(强制最低 TLS1.2,优先 1.3)
  2. 信令通道:WebSocket
  3. 隧道内部帧:MessagePack 二进制 RPC,流复用
  4. HTTP 场景特性:
    • 中继网关完成TLS 终止(微软托管证书)
    • 自动 HTTP→HTTPS 强制跳转、HSTS
    • 请求头注入(原始 IP、隧道信息)
    • 支持流量检查 URL xxx-3000-inspect.devtunnels.ms(抓包调试)
重要区分:
 
DevTunnel 不原生 QUIC 直连穿透(无 STUN P2P 逻辑);全部流量强制经过 Azure 中继,不存在客户端与宿主机直接打通,区别 Tailscale。

3.4 流量转发两种模式

  1. HTTP 模式(默认)
     
    中继理解 HTTP 语义,可以路径重写、请求检查、CORS 适配;公网域名*.devtunnels.ms路由。
  2. 原始 TCP 模式(raw port)
     
    不解析上层协议,纯粹双向 TCP 流转发;适用于数据库、SSH、自定义 TCP 协议;无法使用标准域名访问,需要通过隧道客户端连接。

四、devtunnel.exe 依赖文件 & 运行时依赖链

devtunnel 使用 Rust 静态编译,单文件二进制,默认无外部动态库依赖;但运行时依赖系统底层组件与外部网络端点。

4.1 Windows:devtunnel.exe

  • 编译:rustc + tunnels 官方 crate(microsoft/dev-tunnels)
  • 导入依赖(系统原生 DLL,无需额外安装)
     
    kernel32.dll, advapi32.dll, user32.dll, crypt32.dll, secur32.dll, winhttp.dll, ws2_32.dll
  • 证书依赖:系统根证书存储(用于验证微软 TLS 证书)
  • 进程持久化:无内置服务;如需后台驻留需要 nssm、Win32 服务包装器

4.2 Linux/macOS:devtunnel 二进制

静态链接 OpenSSL/ring 加密库;依赖系统 DNS 解析器、网络栈;无外部.so 依赖。

4.3 持久化存储(配置缓存)

  • Windows:%USERPROFILE%\.devtunnel\
  • Linux/macOS:~/.devtunnel/
     
    缓存内容:OAuth 令牌、隧道元数据缓存、设备标识;令牌绑定当前登录用户

4.4 强制外部网络依赖(出站必须连通)

  1. 认证端点:login.microsoftonline.com(AAD OAuth)
  2. DevTunnels 控制平面 API:tunnels.api.devtunnels.ms
  3. 中继网关:全球多区域 *.devtunnels.ms

4.5 VS Code 联动配套组件

code tunnel 复用同一tunnels库;额外依赖:
  • VS Code Server(远程开发后端,自动下载至~/.vscode-server)
  • 内置 Remote-Tunnels 扩展,本地控制端口 31545(MessagePack RPC 内部通信)

五、完整逻辑链路(两种典型场景)

场景 A:Web 本地服务暴露(devtunnel host -p 3000)

plaintext
开发者浏览器 → https://xxx-3000.usw2.devtunnels.ms
        ↓
Azure中继网关(TLS终止、权限校验)
        ↓(加密帧通过持久WebSocket隧道)
devtunnel.exe Agent
        ↓(本地TCP)
localhost:3000 Web服务
响应原路回流

场景 B:vscode.dev 通过隧道连接远程机器

plaintext
浏览器 vscode.dev
        ↓ WebSocket → Azure中继
        ↓ 隧道数据流
devtunnel host(远程机器)
        ↓ 内部RPC端口31545
VS Code Server(远程)
        ↓ 读写本地代码、调试进程

六、认证与访问控制体系(内置安全模型)

  1. 私有模式(默认)
     
    仅隧道创建者(同一 Microsoft/GitHub 账号)可访问;外部请求 401 拦截。
  2. 匿名访问 --allow-anonymous
     
    任何人拥有 URL 即可访问;建议搭配过期令牌。
  3. 租户限制 --tenant
     
    仅当前 Entra 租户内成员访问。
  4. 访问令牌 token
     
    生成短期作用域令牌,可分享给第三方,无需登录账号。
鉴权发生在云端中继网关,非法流量根本不会下发到内网 Agent,攻击面收敛在 Azure 边缘。

七、配套技术生态链

上层调用入口

  1. 独立 CLI:devtunnel 官方二进制
  2. VS Code:code tunnel / Remote-Tunnels 扩展
  3. REST API:DevTunnels 管理 API(可程序创建 / 销毁隧道)
  4. .NET/ JavaScript SDK(microsoft/dev-tunnels 官方 SDK)

周边配套工具链

  • 流量检查:xxx-port-inspect.devtunnels.ms 内置抓包
  • 后台托管:Windows NSSM / Linux systemd 封装 devtunnel 进程
  • Webhook 调试:接收第三方平台回调到本地 API
  • 远程开发:vscode.dev 无客户端远程编码调试

对比参考(ngrok vs devtunnel 架构关键差异)

项目 devtunnel ngrok
中继运营 微软 Azure ngrok Inc
身份体系 Microsoft/GitHub 账号 独立 authtoken
协议 MessagePack RPC over WebSocket 自定义隧道协议
P2P 直连 不支持,全部流量中转 部分版本支持
VS 生态 深度原生集成 第三方插件
生产 SLA 预览版,不建议生产 付费版提供 SLA

八、关键限制与底层约束

  1. 纯中继架构,无法绕过 Azure 服务器;隐私敏感流量需要额外端到端加密
  2. 存在带宽、连接数、请求速率配额(免费用户月度流量上限)
  3. 不支持自定义域名绑定(免费);企业租户有额外方案
  4. 仅支持 TCP 流量转发;不支持 UDP 原生隧道
  5. 开启匿名访问时,任何人拿到 URL 均可访问,注意内网风险
  6. Agent 进程退出 → 隧道立即断开;无自动保活需要外部监控脚本

九、常见故障底层根因(调试参考)

  1. 隧道显示建立成功,但外部无法访问
     
    云端权限策略拦截;未开启匿名访问、访问者账号不匹配。
  2. 频繁自动重连
     
    NAT 空闲超时切断长连接;控制通道心跳不足以维持防火墙映射。
  3. 慢、高延迟
     
    中继节点地理位置较远;所有流量必须往返 Azure 边缘。
  4. localhost可以访问,隧道访问报错 connection refused
     
    devtunnel 默认绑定127.0.0.1;如果服务监听0.0.0.0不影响,但防火墙阻止本地回环。

devtunnel 是一个用于管理开发者隧道(developer tunnels)的命令行工具。开发者隧道通常用于将本地计算机上的服务暴露到公共互联网或特定网络中,以便开发人员可以在开发和调试过程中访问这些服务。

具体来说,devtunnel 提供了一种简单的方式来创建、配置和管理隧道,使得开发人员可以轻松地访问本地计算机上运行的服务,而无需将这些服务公开到互联网或特定网络。通过 devtunnel,开发人员可以控制隧道的协议、端口、地理位置以及访问权限,以满足各种开发和测试需求。

devtunnel 是一个方便的工具,可帮助开发人员管理他们本地和开发环境之间的连接和访问。


devtunnel 的功能可以基本分类如下:

  1. 隧道创建与管理

    • 创建隧道:允许开发人员在本地服务和公共互联网之间建立安全的通信隧道,以便外部可以访问本地运行的服务。
    • 管理隧道:提供界面或命令行工具,使开发人员可以查看当前活动的隧道,监控隧道状态,以及关闭不再需要的隧道。
  2. 安全性与认证

    • 认证机制:确保只有经过授权的用户可以创建和访问隧道,通常通过用户凭证或访问令牌进行身份验证。
    • 加密通信:使用安全的协议和加密技术保护隧道传输的数据安全性和完整性。
  3. 网络协议支持

    • 支持多种网络协议,如HTTP、WebSocket等,用于建立隧道并传输数据。
    • 可能还支持自定义的隧道协议,以适应不同类型的应用和网络环境。
  4. 代理与转发

    • 提供代理或转发机制,将公共互联网上的请求转发到开发人员本地运行的服务,实现内网穿透的功能。
  5. 监控与日志

    • 提供监控和日志功能,用于跟踪隧道的使用情况、数据流量、连接状态等信息,帮助开发人员进行故障排除和性能优化。
  6. 用户界面

    • 提供直观的管理界面,支持图形用户界面(GUI)或命令行界面(CLI),使开发人员可以方便地配置和管理隧道。
  7. 跨平台支持

    • 支持多种操作系统和开发环境,确保开发人员可以在不同平台上使用 devtunnel 进行开发和调试工作。

这些功能使得 devtunnel 成为开发人员在本地开发和测试环境中与外部网络之间安全交互的重要工具。


devtunnel 可以在多种场景下发挥作用,特别是在需要开发人员与本地服务之间建立安全、可靠连接的情况下。以下是一些典型的应用场景:

  1. 远程调试与测试

    • 允许开发人员在本地开发环境中运行的服务,通过 devtunnel 建立到远程客户端或测试设备的安全连接。这样可以实时调试和测试应用程序,无需将代码部署到公共互联网上。
  2. 内网穿透

    • 在企业内部网络中,开发人员可能需要访问位于内部服务器或设备上的服务。devtunnel 提供了一种安全的方法,通过代理或转发机制,将这些服务暴露给外部开发人员或合作伙伴,而无需直接暴露内部网络。
  3. 本地开发环境暴露

    • 当开发人员在本地计算机上开发和测试应用时,有时需要让外部用户或客户端能够访问这些本地运行的服务。devtunnel 可以帮助实现这种需求,而无需在公共互联网上部署服务或配置复杂的网络设置。
  4. 安全访问本地服务

    • 对于需要保护数据安全性和隐私的应用场景,如移动应用程序开发、IoT设备调试等,devtunnel 提供了加密和认证的功能,确保通信的安全性,防止未经授权的访问。
  5. 跨平台开发

    • 在跨平台开发时,开发人员可能需要从不同的操作系统访问或测试特定的服务。devtunnel 的跨平台支持使得在多种操作系统上轻松建立连接和进行调试成为可能。
  6. 团队协作与远程工作

    • 对于分布在全球各地的开发团队或远程工作人员,devtunnel 提供了一种简便的方法,使他们可以安全地访问和协作开发环境中的服务和应用程序。
  7. 故障排除与监控

    • 开发人员可以利用 devtunnel 提供的监控和日志功能,实时跟踪隧道的使用情况、数据传输量以及连接状态,帮助快速定位和解决问题。

devtunnel 的应用场景广泛,特别适用于需要安全、高效地访问本地服务的开发和测试环境。


devtunnel 的底层原理涉及到如何实现将本地服务暴露到公共互联网或特定网络中的技术细节。虽然具体实现可能有所不同,但一般来说,开发者隧道工具如 devtunnel 通常会利用以下几种技术来实现其功能:

  1. 反向代理(Reverse Proxy)

    • devtunnel 可能会使用反向代理技术,将从公共互联网接收的请求转发到本地服务。这种方式可以绕过网络中的防火墙或 NAT(网络地址转换)设备,从而使本地服务可以被外部访问。
  2. 隧道协议

    • devtunnel 可能会使用专门的隧道协议来在本地计算机和远程服务器之间建立安全的通信通道。这些协议通常会提供加密和认证功能,确保数据传输的安全性和完整性。
  3. 网络套接字(Socket)通信

    • devtunnel 可能会通过网络套接字通信来实现数据的传输和转发。本地服务会监听一个特定的端口,devtunnel 将这个端口映射到远程服务器上的一个端口,从而使外部用户可以访问本地服务。
  4. 认证和授权

    • devtunnel 可能会实现一套认证和授权机制,以确保只有经过授权的用户可以访问本地服务。这可以通过访问令牌、用户凭据或其他形式的身份验证来实现。
  5. 管理界面和命令行工具

    • devtunnel 提供了一个用户友好的管理界面或命令行工具,使开发人员可以轻松地创建、配置和管理隧道设置。这些工具通常支持多种操作,如创建隧道、修改配置、监视状态等。

devtunnel 的底层原理结合了网络通信技术、安全性实施和用户管理,旨在为开发人员提供一个方便而安全的方式来访问和管理本地服务。


devtunnel 的架构通常涉及以下几个关键组件和步骤:

  1. Client(客户端)

    • 客户端是运行在开发人员的本地计算机上的软件。它负责与 devtunnel 服务端建立连接,并管理本地服务的隧道设置。
    • 客户端通常提供命令行界面或图形用户界面(GUI),允许开发人员创建、配置和管理隧道。
    • 在创建隧道时,客户端会将本地服务的信息(如本地端口、协议等)发送给 devtunnel 服务端。
  2. Server(服务端)

    • 服务端是运行在云端或者特定网络中的软件。它接收来自客户端的连接请求,并处理这些请求以建立隧道。
    • 服务端负责接收来自客户端的本地服务信息,并将这些信息用于配置隧道。
    • 服务端还可能负责管理认证和授权,确保只有授权用户可以创建和访问隧道。
  3. Tunneling Protocol(隧道协议)

    • 隧道协议定义了客户端和服务端之间的通信方式和数据交换格式。它通常包括加密和认证机制,以确保隧道传输的安全性和完整性。
    • 隧道协议可能基于现有的网络协议(如HTTP、WebSocket等),或者使用专门设计的协议。
  4. Proxy or Forwarding Mechanism(代理或转发机制)

    • 当客户端创建隧道时,服务端可能会通过反向代理或端口转发等技术,将公共互联网上的请求转发到客户端本地服务。
    • 这种机制允许开发人员通过 devtunnel 将本地服务暴露给外部用户,而无需直接将服务部署到公共互联网上。
  5. Authentication and Authorization(认证与授权)

    • devtunnel 可能包含认证和授权机制,以确保只有经过授权的用户可以使用隧道服务。
    • 认证机制通常涉及用户凭据、访问令牌或其他身份验证方式,确保隧道服务的安全性和可控性。
  6. Management Interface(管理界面)

    • devtunnel 提供了一个管理界面,使开发人员可以轻松地创建、配置和管理隧道设置。
    • 这个界面可以是命令行工具或者图形用户界面,提供了各种操作选项,如创建隧道、查看隧道状态、监控数据流量等。

通过这些组件和步骤,devtunnel 架构提供了一个方便和安全的方法,使开发人员可以在开发和调试过程中访问和管理本地服务,同时保护这些服务免受未经授权的访问。


Dev Tunnels CLI v1.0.1301 完整命令参数总表

版本:1.0.1301+f410beb2af
 
命令来源:官方帮助文本,补充常用子参数、场景、示例

全局通用选项(所有命令均可附加)

类别 命令 / 参数 描述 应用场景 实例
全局选项 -v, --verbose 开启详细日志输出,打印握手、重连、流量调试信息 排查隧道掉线、连接异常、中继协商故障 devtunnel host -p 3000 -v
全局选项 --version 打印 CLI 版本号 确认二进制版本、核对更新基线 devtunnel --version
全局选项 -h, -?, --help 展示对应命令帮助文档 查询子命令可用参数 devtunnel host --help

主命令清单

主命令 子参数 / 关键选项 描述 应用场景 实例
list 无必填参数
 
可选:-v
列出当前账号下全部隧道 ID、集群、访问模式、状态 快速查看已有隧道清单,清理闲置隧道 devtunnel list
show <tunnel-id> <tunnel-id>(必填隧道标识) 查看隧道元数据:端口配置、访问策略、创建时间、集群、匿名权限 核查隧道权限、确认端口绑定、排查外部访问权限问题 devtunnel show my-web-tunnel
create <tunnel-id> <tunnel-id> 必填
 
--allow-anonymous 允许匿名访问
 
--tenant <id> 限制 Entra 租户访问
创建持久化隧道载体(不启动转发 host,仅云端注册隧道资源) 预先规划隧道、提前配置访问策略,后续 host 接入 devtunnel create my-api-tunnel --allow-anonymous
update <tunnel-id> <tunnel-id> 必填
 
--allow-anonymous true/false
 
--tenant <tenant-id>
修改隧道访问控制策略(开启 / 关闭匿名、租户限制) 临时开放外部测试,测试完成关闭匿名降低风险 devtunnel update my-api-tunnel --allow-anonymous false
delete <tunnel-id> <tunnel-id> 必填 删除指定隧道,云端资源释放,所有连接立即断开 废弃隧道清理,回收配额 devtunnel delete my-old-tunnel
delete-all 无参数 一键删除当前账号全部隧道 批量清理所有测试隧道,重置环境 devtunnel delete-all
token <tunnel-id> <tunnel-id> 必填
 
--expires <duration> 设置有效期
 
--scope <port> 限定端口
生成临时访问令牌,第三方无需登录微软账号访问隧道 交付外部合作方、客户临时调试本地接口,限制访问时效 devtunnel token my-web-tunnel --expires 8h
set <tunnel-id> <tunnel-id> 必填 设置为默认隧道,后续 host 不加 ID 自动使用此隧道 固定长期隧道,简化日常命令输入 devtunnel set main-dev-tunnel
unset 无参数 清除默认隧道绑定 切换不同隧道工作环境 devtunnel unset
access 子命令:add/remove/list
 
--identity
 
--type user/tenant
精细化访问控制,添加指定微软账号 / 租户白名单 企业内网严格管控,仅允许指定人员访问隧道 devtunnel access list my-tunnel
user 子命令:login/logout/show 账号凭据管理(OAuth 登录、注销、查看当前登录账号) 切换微软 / GitHub 账号、清除本地缓存 token devtunnel user login
 
devtunnel user logout
port 子命令:add/remove/list
 
--port <local>
 
--protocol http/tcp
静态管理隧道绑定端口(提前注册端口,host 启动自动加载) 预先规划多端口服务,持久保存端口配置 devtunnel port add my-tunnel --port 3000 --protocol http
host <tunnel-id> <tunnel-id> 可选
 
-p, --port <num> 必填本地端口
 
--protocol http/tcp
 
--allow-anonymous
 
--inspect 启用流量检查面板
 
--cluster <cluster-name> 指定中继集群
启动隧道代理,内网主动连接微软中继,转发本地端口流量
 
不填隧道 ID:自动创建临时一次性隧道
最常用命令:暴露本地 Web/API、SSH、数据库供外网访问 devtunnel host -p 3000 --protocol http
 
devtunnel host my-tunnel -p 22 --protocol tcp
connect <tunnel-id> <tunnel-id> 必填
 
--port <remote>:<local>
隧道客户端模式:远程隧道端口映射到本机端口(反向访问远端内网服务) 主动连接远端 devtunnel 宿主机服务,类似远程端口转发 devtunnel connect remote-tunnel --port 5432:15432
limits 无参数 查询账号配额:隧道数量上限、流量限额、并发连接限制 判断是否到达免费额度阈值 devtunnel limits
clusters 无参数 列出全球可用中继集群区域(usw2,easia,westeu 等) 手动指定就近集群降低延迟 devtunnel clusters
echo <protocol> <protocol> 可选 http/tcp
 
--port <num>
本地诊断回显服务器,用于测试本地端口监听是否正常 排查本地端口占用、验证网络监听功能,不连云端 devtunnel echo http --port 8080
ping <uri> <uri> 回显服务地址 诊断连通性,测试到远程回显节点链路质量 排查到 devtunnels.ms 中继网络连通、丢包延迟 devtunnel ping wss://usw2.devtunnels.ms

高频组合实用范例汇总

  1. 临时隧道快速暴露 3000 端口(一次性隧道,进程关闭即销毁)
bash
devtunnel host -p 3000 --allow-anonymous
  1. 使用持久隧道,开启流量抓包面板
bash
devtunnel host my-api -p 5000 --inspect
  1. 创建隧道并预先开放匿名访问
bash
devtunnel create my-service --allow-anonymous
devtunnel host my-service -p 8080
  1. 生成 8 小时有效访问令牌
bash
devtunnel token my-service --expires 8h

补充重要说明

  1. 临时隧道 vs 持久隧道
     
    devtunnel host 不写隧道 ID → 临时隧道,进程退出自动销毁;
     
    createhost接入 → 持久隧道,长期保留配置。
  2. http协议:微软中继自动提供 *.devtunnels.ms HTTPS 域名;
     
    tcp原始协议:无公网域名,只能使用devtunnel connect客户端接入。
  3. 匿名访问风险提醒:--allow-anonymous 任何人持有 URL 即可访问,不要直接暴露内网敏感服务。

欢迎使用 dev tunnels! CLI 版本:1.0.1301+f410beb2af

通过使用本软件,您同意以下条款:

在 GitHub 上报告问题:https://aka.ms/devtunnels/issues 使用 'devtunnel --help' 查看可用命令或访问:https://aka.ms/devtunnels/docs

描述: Dev Tunnels CLI

用法: devtunnel [命令] [选项]

选项:

-v, --verbose 启用详细输出

--version 显示版本信息

-?, -h, --help 显示帮助和用法信息

命令:

list 列出隧道

show <tunnel-id> 显示隧道详细信息

create <tunnel-id> 创建隧道

update <tunnel-id> 更新隧道属性

delete <tunnel-id> 删除隧道

delete-all 删除所有隧道

token <tunnel-id> 发布隧道访问令牌

set <tunnel-id> 设置默认隧道

unset 清除默认隧道

access 管理隧道访问控制条目

user 管理用户凭据

port 管理隧道端口

host <tunnel-id> 托管隧道,如果未指定隧道 ID,则将创建新隧道

connect <tunnel-id> 连接到现有隧道

limits 列出用户限制

clusters 按位置列出可用服务集群

echo <protocol> 在本地端口上运行诊断回显服务器

ping <uri> 发送诊断消息到远程回显服务器

这些命令和选项用于管理开发隧道的各个方面,帮助您安全地在本地开发环境和远程服务之间进行数据交换和测试。

这里是 devtunnel 命令的初级大纲:

  1. list

    • 描述:列出当前存在的隧道。
    • 用法:devtunnel list
  2. show

    • 描述:显示特定隧道的详细信息。
    • 用法:devtunnel show <tunnel-id>
  3. create

    • 描述:创建新的隧道。
    • 用法:devtunnel create <tunnel-id>
  4. update

    • 描述:更新现有隧道的属性。
    • 用法:devtunnel update <tunnel-id>
  5. delete

    • 描述:删除特定的隧道。
    • 用法:devtunnel delete <tunnel-id>
  6. delete-all

    • 描述:删除所有的隧道。
    • 用法:devtunnel delete-all
  7. token

    • 描述:生成用于访问隧道的访问令牌。
    • 用法:devtunnel token <tunnel-id>
  8. set

    • 描述:设置默认的隧道。
    • 用法:devtunnel set <tunnel-id>
  9. unset

    • 描述:清除默认的隧道设置。
    • 用法:devtunnel unset
  10. access

    • 描述:管理隧道的访问控制条目。
    • 用法:devtunnel access
  11. user

    • 描述:管理用户凭据。
    • 用法:devtunnel user
  12. port

    • 描述:管理隧道的端口设置。
    • 用法:devtunnel port
  13. host

    • 描述:托管隧道,若未指定隧道 ID 则创建新隧道。
    • 用法:devtunnel host <tunnel-id>
  14. connect

    • 描述:连接到现有的隧道。
    • 用法:devtunnel connect <tunnel-id>
  15. limits

    • 描述:列出用户的操作限制。
    • 用法:devtunnel limits
  16. clusters

    • 描述:按地理位置列出可用的服务集群。
    • 用法:devtunnel clusters
  17. echo

    • 描述:在本地端口上运行诊断回显服务器。
    • 用法:devtunnel echo <protocol>
  18. ping

    • 描述:向远程回显服务器发送诊断消息。
    • 用法:devtunnel ping <uri>

这些命令可以帮助您管理和操作开发隧道,从而有效地在本地开发环境和远程服务之间进行数据交换和测试。

这里是 devtunnel 命令的中级大纲,包含更多细节和高级用法:

  1. list

    • 描述:列出当前存在的隧道。
    • 用法:devtunnel list
  2. show

    • 描述:显示特定隧道的详细信息。
    • 用法:devtunnel show <tunnel-id>
  3. create

    • 描述:创建新的隧道。
    • 用法:devtunnel create <tunnel-id> [--protocol <protocol>] [--port <port>] [--region <region>]
  4. update

    • 描述:更新现有隧道的属性。
    • 用法:devtunnel update <tunnel-id> [--protocol <protocol>] [--port <port>]
  5. delete

    • 描述:删除特定的隧道。
    • 用法:devtunnel delete <tunnel-id>
  6. delete-all

    • 描述:删除所有的隧道。
    • 用法:devtunnel delete-all
  7. token

    • 描述:生成用于访问隧道的访问令牌。
    • 用法:devtunnel token <tunnel-id>
  8. set

    • 描述:设置默认的隧道。
    • 用法:devtunnel set <tunnel-id>
  9. unset

    • 描述:清除默认的隧道设置。
    • 用法:devtunnel unset
  10. access

    • 描述:管理隧道的访问控制条目。
    • 用法:devtunnel access list|add|remove [--user <username>] [--role <role>]
  11. user

    • 描述:管理用户凭据。
    • 用法:devtunnel user add|remove|list [--username <username>] [--role <role>]
  12. port

    • 描述:管理隧道的端口设置。
    • 用法:devtunnel port add|remove|list [--port <port>] [--protocol <protocol>]
  13. host

    • 描述:托管隧道,若未指定隧道 ID 则创建新隧道。
    • 用法:devtunnel host <tunnel-id> [--region <region>] [--protocol <protocol>] [--port <port>]
  14. connect

    • 描述:连接到现有的隧道。
    • 用法:devtunnel connect <tunnel-id> [--region <region>]
  15. limits

    • 描述:列出用户的操作限制。
    • 用法:devtunnel limits
  16. clusters

    • 描述:按地理位置列出可用的服务集群。
    • 用法:devtunnel clusters list
  17. echo

    • 描述:在本地端口上运行诊断回显服务器。
    • 用法:devtunnel echo <protocol> [--port <port>]
  18. ping

    • 描述:向远程回显服务器发送诊断消息。
    • 用法:devtunnel ping <uri>

这些命令包含了更多的选项和参数,使您能够更灵活地管理和操作开发隧道,以适应各种开发和测试场景的需求。

devtunnel 命令的高级大纲,包含更详细的细节和用法:

  1. list

    • 描述:列出当前存在的隧道。
    • 用法:devtunnel list
  2. show

    • 描述:显示特定隧道的详细信息。
    • 用法:devtunnel show <tunnel-id>
  3. create

    • 描述:创建新的隧道。
    • 用法:devtunnel create <tunnel-id> [--protocol <protocol>] [--port <port>] [--region <region>] [--hostname <hostname>] [--custom-domain <domain>] [--tags <tags>]
  4. update

    • 描述:更新现有隧道的属性。
    • 用法:devtunnel update <tunnel-id> [--protocol <protocol>] [--port <port>] [--hostname <hostname>] [--custom-domain <domain>] [--tags <tags>]
  5. delete

    • 描述:删除特定的隧道。
    • 用法:devtunnel delete <tunnel-id>
  6. delete-all

    • 描述:删除所有的隧道。
    • 用法:devtunnel delete-all
  7. token

    • 描述:生成用于访问隧道的访问令牌。
    • 用法:devtunnel token <tunnel-id>
  8. set

    • 描述:设置默认的隧道。
    • 用法:devtunnel set <tunnel-id>
  9. unset

    • 描述:清除默认的隧道设置。
    • 用法:devtunnel unset
  10. access

    • 描述:管理隧道的访问控制。
    • 子命令:
      • list: 列出访问控制列表。
      • add: 添加访问控制条目。
      • remove: 移除访问控制条目。
    • 用法:devtunnel access list|add|remove [--user <username>] [--role <role>]
  11. user

    • 描述:管理用户凭据。
    • 子命令:
      • add: 添加新用户。
      • remove: 移除用户。
      • list: 列出所有用户。
    • 用法:devtunnel user add|remove|list [--username <username>] [--role <role>]
  12. port

    • 描述:管理隧道的端口设置。
    • 子命令:
      • add: 添加新端口。
      • remove: 移除端口。
      • list: 列出所有端口。
    • 用法:devtunnel port add|remove|list [--port <port>] [--protocol <protocol>]
  13. host

    • 描述:托管隧道,若未指定隧道 ID 则创建新隧道。
    • 用法:devtunnel host <tunnel-id> [--region <region>] [--protocol <protocol>] [--port <port>] [--hostname <hostname>] [--custom-domain <domain>] [--tags <tags>]
  14. connect

    • 描述:连接到现有的隧道。
    • 用法:devtunnel connect <tunnel-id> [--region <region>]
  15. limits

    • 描述:查看用户的操作限制。
    • 用法:devtunnel limits
  16. clusters

    • 描述:列出可用的服务集群。
    • 用法:devtunnel clusters list
  17. echo

    • 描述:在本地端口上运行诊断回显服务器。
    • 用法:devtunnel echo <protocol> [--port <port>]
  18. ping

    • 描述:向远程回显服务器发送诊断消息。
    • 用法:devtunnel ping <uri>

这些命令提供了更广泛的选项和参数,使您能够在开发和测试中更精细地控制和管理隧道的设置和访问。

devtunnel 命令的专家级大纲,包含详细的用法和选项:

  1. list

    • 描述:列出当前存在的隧道。
    • 用法:devtunnel list
    • 选项:
      • -o, --output <format>:指定输出格式(如 JSON、表格等)。
  2. show

    • 描述:显示特定隧道的详细信息。
    • 用法:devtunnel show <tunnel-id>
    • 选项:无额外选项。
  3. create

    • 描述:创建新的隧道。
    • 用法:devtunnel create <tunnel-id> [--protocol <protocol>] [--port <port>] [--region <region>] [--hostname <hostname>] [--custom-domain <domain>] [--tags <tags>]
    • 选项:
      • --protocol <protocol>:指定隧道协议(例如 HTTP、TCP)。
      • --port <port>:指定隧道监听的端口。
      • --region <region>:指定隧道的地理位置。
      • --hostname <hostname>:指定隧道的主机名。
      • --custom-domain <domain>:指定自定义域名。
      • --tags <tags>:为隧道添加标签。
  4. update

    • 描述:更新现有隧道的属性。
    • 用法:devtunnel update <tunnel-id> [--protocol <protocol>] [--port <port>] [--hostname <hostname>] [--custom-domain <domain>] [--tags <tags>]
    • 选项:与 create 命令相同。
  5. delete

    • 描述:删除特定的隧道。
    • 用法:devtunnel delete <tunnel-id>
    • 选项:无额外选项。
  6. delete-all

    • 描述:删除所有的隧道。
    • 用法:devtunnel delete-all
    • 选项:无额外选项。
  7. token

    • 描述:生成用于访问隧道的访问令牌。
    • 用法:devtunnel token <tunnel-id>
    • 选项:无额外选项。
  8. set

    • 描述:设置默认的隧道。
    • 用法:devtunnel set <tunnel-id>
    • 选项:无额外选项。
  9. unset

    • 描述:清除默认的隧道设置。
    • 用法:devtunnel unset
    • 选项:无额外选项。
  10. access

    • 描述:管理隧道的访问控制列表。
    • 子命令:
      • list:列出访问控制列表。
      • add:添加访问控制规则。
      • remove:移除访问控制规则。
    • 用法:devtunnel access list|add|remove [--user <username>] [--role <role>]
  11. user

    • 描述:管理用户凭据。
    • 子命令:
      • add:添加新用户。
      • remove:移除用户。
      • list:列出所有用户。
    • 用法:devtunnel user add|remove|list [--username <username>] [--role <role>]
  12. port

    • 描述:管理隧道的端口设置。
    • 子命令:
      • add:添加新端口。
      • remove:移除端口。
      • list:列出所有端口。
    • 用法:devtunnel port add|remove|list [--port <port>] [--protocol <protocol>]
  13. host

    • 描述:托管隧道,若未指定隧道 ID 则创建新隧道。
    • 用法:devtunnel host <tunnel-id> [--region <region>] [--protocol <protocol>] [--port <port>] [--hostname <hostname>] [--custom-domain <domain>] [--tags <tags>]
  14. connect

    • 描述:连接到现有的隧道。
    • 用法:devtunnel connect <tunnel-id> [--region <region>]
    • 选项:无额外选项。
  15. limits

    • 描述:查看用户的操作限制。
    • 用法:devtunnel limits
    • 选项:无额外选项。
  16. clusters

    • 描述:列出可用的服务集群。
    • 用法:devtunnel clusters list
    • 选项:无额外选项。
  17. echo

    • 描述:在本地端口上运行诊断回显服务器。
    • 用法:devtunnel echo <protocol> [--port <port>]
    • 选项:
      • --port <port>:指定回显服务器监听的端口。
  18. ping

    • 描述:向远程回显服务器发送诊断消息。
    • 用法:devtunnel ping <uri>
    • 选项:无额外选项。

这些命令提供了广泛的选项和参数,允许您精确控制和管理 devtunnel 的配置、访问控制和运行时环境。

devtunnel 命令的顶尖级大纲,详细描述了其功能、用法和选项:

  1. list

    • 描述:列出当前所有的隧道。
    • 用法devtunnel list
    • 选项
      • -o, --output <format>:指定输出格式,如 JSON、表格等。
  2. show

    • 描述:显示特定隧道的详细信息。
    • 用法devtunnel show <tunnel-id>
    • 选项:无额外选项。
  3. create

    • 描述:创建新的隧道。
    • 用法devtunnel create <tunnel-id> [--protocol <protocol>] [--port <port>] [--region <region>] [--hostname <hostname>] [--custom-domain <domain>] [--tags <tags>]
    • 选项
      • --protocol <protocol>:指定隧道的协议。
      • --port <port>:指定隧道监听的端口。
      • --region <region>:指定隧道的地理位置。
      • --hostname <hostname>:指定隧道的主机名。
      • --custom-domain <domain>:指定隧道的自定义域名。
      • --tags <tags>:为隧道添加标签。
  4. update

    • 描述:更新现有隧道的属性。
    • 用法devtunnel update <tunnel-id> [--protocol <protocol>] [--port <port>] [--hostname <hostname>] [--custom-domain <domain>] [--tags <tags>]
    • 选项:与 create 命令中的选项相同。
  5. delete

    • 描述:删除特定的隧道。
    • 用法devtunnel delete <tunnel-id>
    • 选项:无额外选项。
  6. token

    • 描述:生成用于访问隧道的访问令牌。
    • 用法devtunnel token <tunnel-id>
    • 选项:无额外选项。
  7. set

    • 描述:设置默认的隧道。
    • 用法devtunnel set <tunnel-id>
    • 选项:无额外选项。
  8. unset

    • 描述:清除默认的隧道设置。
    • 用法devtunnel unset
    • 选项:无额外选项。
  9. access

    • 描述:管理隧道的访问控制列表。
    • 用法devtunnel access <command>
    • 子命令
      • list:列出访问控制列表。
      • add:添加访问控制规则。
      • remove:移除访问控制规则。
    • 选项
      • --user <username>:指定用户。
      • --role <role>:指定角色。
  10. user

    • 描述:管理用户凭据。
    • 用法devtunnel user <command>
    • 子命令
      • add:添加新用户。
      • remove:移除用户。
      • list:列出所有用户。
    • 选项
      • --username <username>:指定用户名。
      • --role <role>:指定角色。
  11. port

    • 描述:管理隧道的端口设置。
    • 用法devtunnel port <command>
    • 子命令
      • add:添加新端口。
      • remove:移除端口。
      • list:列出所有端口。
    • 选项
      • --port <port>:指定端口号。
      • --protocol <protocol>:指定协议。
  12. echo

    • 描述:在本地端口上运行诊断回显服务器。
    • 用法devtunnel echo <protocol> [--port <port>]
    • 选项
      • --port <port>:指定回显服务器监听的端口。
  13. ping

    • 描述:向远程回显服务器发送诊断消息。
    • 用法devtunnel ping <uri>
    • 选项:无额外选项。

这些命令允许用户管理隧道的创建、更新、删除,设置访问控制、生成访问令牌以及管理用户和端口设置等。每个命令均支持多种选项,以便用户根据需要配置和管理其隧道服务。

posted @ 2024-07-03 20:01  suv789  阅读(426)  评论(0)    收藏  举报