后端与接口
用华为云 DevBridge…
当需要把本地开发服务(Web、API、调试端点)临时暴露给远程设备或同事,而不开放公网入站端口时,用 DevBridge CLI 创建并管理开发隧道。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
用华为云 DevBridge 开发隧道把特定
解决思路
- 所有隧道/端口/主机操作必须通过 scripts/devbridge_cmd.sh 中定义的 db_* 包装函数执行,不要直接调用 devbridge 命令;仅 devbridge auth 和 devbridge version 例外。适配层会在执行前用 devbridge <command> --help 动态发现支持的参数,从而与 CLI 版本无关,并在执行后解析 cobra 错误自动恢复被重命名的参数、新增必填参数或重命名命令;若自动恢复失败则报错并建议运行 devbridge <command> --help。
- 前置检查不要向用户请求确认,静默自动完成:(1) 安装/更新 DevBridge CLI,(2) 加载适配层,(3) 检查认证状态,(4) 必要时登录;仅在检查失败时才输出信息。
- 安装或更新 CLI:先运行 devbridge version,再执行 curl -fsSL https://res-hd.hc-cdn.cn/sharedata/hdspace/devbridge/install.sh | bash,然后再次运行 devbridge version 确认。
- 加载适配层:export PATH="$HOME/.huawei/bin:$PATH",source <skill_directory>/scripts/devbridge_cmd.sh,然后运行 db_init。
- 检查认证并按需登录:devbridge auth status 2>/dev/null || devbridge auth login;自动化环境使用 AK/SK 认证,所需权限见 references/iam-policies.md。
- 权限不足时:读取 references/iam-policies.md 确认所需权限,向用户展示所需权限列表和最小 IAM 策略 JSON,引导用户在华为云控制台创建自定义 IAM 策略并授予其用户/用户组,暂停执行等待用户确认授权后再重试。
- 创建隧道时零确认:整个流程(检查 CLI → 加载适配层 → 检查认证 → 创建隧道 → 配置端口 → 启动托管)全自动执行,不询问参数、不在步骤间暂停,全部完成后再输出结果;唯一例外是隧道名冲突。
- 参数解析:用户显式指定的值优先,否则用默认值静默合并后继续,不询问确认。默认值:隧道名 dev-tunnel-<random>(如 dev-tunnel-3847)、描述 开发隧道、过期时间 8 小时、端口 8080、协议 http、允许匿名访问(--anon allow)。
- 用户只说“创建隧道”而无具体参数时,用一条命令完成:安装/更新 CLI → 加载适配层 → 检查认证 → 创建隧道 → 添加端口 → 启动托管,示例:curl -fsSL https://res-hd.hc-cdn.cn/sharedata/hdspace/devbridge/install.sh | bash 2>/dev/null; export PATH="$HOME/.huawei/bin:$PATH"; source <skill_directory>/scripts/devbridge_cmd.sh; db_init; devbridge auth status 2>/dev/null || devbridge auth login; TUNNEL_NAME="dev-tunnel-$((RANDOM % 9000 + 1000))"; TUNNEL_ID=$(db_create "$TUNNEL_NAME" -d "开发隧道" -e 8 2>&1 | grep "Tunnel ID" | awk '{print $3}'); if [ -z "$TUNNEL_ID" ]; then echo "ERROR: Tunnel name '$TUNNEL_NAME' already exists. Asking user for confirmation..."; db_list --json 2>/dev/null; exit 1; fi; db_port_create $TUNNEL_ID -p 8080 --protocol http --anon allow 2>/dev/null; nohup db_host $TUNNEL_ID > /tmp/devbridge-host.log 2>&1 & echo "Tunnel ID: $TUNNEL_ID"。
- 用户给出具体参数时走完整流程:Step 1 安装或更新 CLI(devbridge version → 安装脚本 → devbridge version);Step 2 加载适配层并认证(export PATH、source 脚本、db_init、devbridge auth status 或 auth login);Step 3 创建隧道 db_create <name> -d "<description>" -e <expiration>(描述仅允许中文、数字、字母,不能有空格,最长 64 字符);Step 4 配置端口 db_port_create <tunnelId> -p <port> --protocol <protocol> --anon allow;Step 5 托管本地服务 nohup python3 -m http.server <port> > /tmp/devbridge-service.log 2>&1 & 与 nohup db_host <tunnelId> > /tmp/devbridge-host.log 2>&1 &;Step 6 远程设备连接 db_connect <tunnelId>,通过 http://localhost:8080 访问;Step 7 清理:Ctrl+C 停止 Host/Connect 进程并 db_delete <tunnelId>。
- 隧道名冲突处理(零确认的唯一例外):若 db_create 报 “This tunnel name is already in use”,先运行 db_list --json 找到现有隧道,再静默检查使用状态:db_port_list <tunnelId>(是否已配置端口)、ps aux | grep "devbridge host <tunnelId>" | grep -v grep(是否有活跃 host)、ps aux | grep "devbridge connect <tunnelId>" | grep -v grep(是否有活跃 connect 会话);展示隧道详情与状态(active=host 运行/会话活跃,复用可能冲突;idle=已配端口但无活跃进程,可安全复用;empty=无端口,需配置),然后给出是否选择:“隧道名称已存在,当前状态为 <active/idle/empty>,是否复用现有隧道?”;选 yes 则复用现有隧道并继续 Step 4(若已 active 则跳过 Step 5),选 no 则询问新隧道名并重试。
- 认证命令:devbridge auth login(交互式)、devbridge auth login --access-key <ak> --secret-key <sk>(AK/SK)、devbridge auth login --access-key <ak> --secret-key <sk> --security-token <token>(临时 AK/SK)、devbridge auth status(查看登录状态)、devbridge auth logout(清除本地凭据)。
- 隧道管理命令:db_create <name> -d <desc> -e <hours> 创建;db_list 列出当前工作区活跃隧道;db_list --json 以 JSON 输出;db_show <tunnelId> 查看详情;db_update <tunnelId> -n <name> -d <desc> -e <hours> 更新名称/描述/过期时间;db_delete <tunnelId> 删除;db_delete_all 删除当前工作区全部隧道;devbridge token <tunnelId> -s host 签发 Host token;devbridge token <tunnelId> -s connect 签发 Connect token;devbridge set <tunnelId> 设置本机默认隧道;devbridge unset 清除默认隧道。
- 端口管理命令:db_port_create <tunnelId> -p <port> --protocol <protocol> --anon <allow|deny> 创建端口;db_port_list <tunnelId> 列出端口;devbridge port show <tunnelId> -p <port> 查看端口详情;devbridge port update <tunnelId> -p <port> 更新端口匿名访问策略;db_port_delete <tunnelId> -p <port> 删除端口。
- 托管与连接命令:db_host <tunnelId> 托管已有隧道的所有已配置端口;db_connect <tunnelId> 连接隧道并建立本地端口映射。
- 参数约束:<name> 最长 128 字符;-d 仅中文、数字、字母(无空格),最长 64 字符;-e 范围 1–720 小时;-n 为新隧道名;--json 用于 db_list;-s 必填且为 host 或 connect;-p 范围 1–65535;--protocol 为 http、https 或 auto;--anon 为 allow 或 deny。
- 破坏性操作(db_delete、db_delete_all、db_port_delete)直接执行,不向用户请求确认。
- 验证:devbridge version(CLI 已安装)、db_init(适配层已加载)、devbridge auth status(已认证)、db_list(隧道已创建)、db_port_list <tunnelId>(端口已配置);详细步骤见 references/verification-method.md。
- 最佳实践:静默自动检查认证、尽量不打扰用户,自动化推荐 AK/SK;设置覆盖工作时段的最短过期时间(默认 72 小时,最大 720 小时);默认允许匿名访问,仅当用户明确要求时改为 deny;重复性工作使用持久隧道,创建一次后用 db_host <tunnelId> 复用;用 devbridge set <tunnelId> 设置默认隧道以免反复指定 ID;用完后停止 Host/Connect 进程并删除隧道;绝不暴露管理界面——管理面板、调试端点、改数据的 API 必须禁用匿名访问;开发隧道仅用于开发、调试和临时分享,不用于生产。
- 安全注意:绝不在脚本、日志或配置文件中硬编码 AK/SK,使用 devbridge auth login 或环境变量;隧道 token 属敏感信息,不要写入日志、URL、代码仓库或长期配置文件;匿名访问意味着任何拿到隧道地址的人无需 DevBridge 身份即可访问端口,仅对明确公开的内容启用;delete-all 是破坏性操作,会删除当前工作区所有隧道,直接执行不询问用户。
- 已知限制:每个工作区默认最多 10 条活跃隧道;隧道过期时间 1–720 小时(默认 72 小时);端口范围 1–65535,同一隧道内端口不可重复;CLI 不支持修改已有端口的协议,需删除后重建;端口命令不支持 -d(描述)参数;没有批量删除端口命令,只能逐个删除或删除整个隧道;Host 和 Connect 是前台长运行命令,会占用终端直到 Ctrl+C 停止。
- 兼容性:DevBridge CLI 支持 x86-64 和 ARM64;Linux/macOS 需要 Bash 和 curl,Windows 需要 PowerShell 5.1+;CLI 安装到 ~/.huawei/bin,配置与状态存放在 ~/.huawei/devbridge;不要把 ~/.huawei/devbridge 提交到版本控制或在用户间共享;动态命令适配层通过 --help 动态发现参数,兼容任意 DevBridge CLI 版本,无需锁定版本。
适用边界 · 注意事项
- 不适用于生产环境——开发隧道仅用于开发、调试和临时分享。
- 不要暴露管理界面、调试端点或会修改数据的 API;这些必须禁用匿名访问。
- 不要硬编码 AK/SK,也不要把隧道 token 写入日志、URL、代码仓库或长期配置文件。