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

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

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 版本: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  阅读(96)  评论(0编辑  收藏  举报