
对于开发人员、运维人员、远程办公人员,经常面临类似需求:如何安全、高效、可控地将内网的服务暴露给公网或特定的远程用户,而无需在防火墙上留下永久性的入站端口漏洞。
此类需求的场景挺常见的,包括:
- 家里树莓派 / NAS / 小主机在运营商级NAT(CGNAT)后面,没有公网 IP
- 公司或学校网络锁得死死的,开不了端口
- 临时想让朋友/自己用手机访问家里的 Immich、Jellyfin、Home Assistant 或某个 Web 工具
- 从外部访问公司的测试环境演示系统功能
因此各种内网穿透(Intranet Penetration)或隧道(Tunneling)技术应运而生。在《内网穿透开源项目汇总》中汇总过将内网服务暴露到公网的开源项目.除了内网穿透外,还可以用Tailscale、ZeroTier 组网进行远程管理。
这些解决方案要么需要注册第三方账号(如 ngrok、Cloudflare Tunnel)、在目标和客户端同时安装软件(如 Tailscale、ZeroTier),要么需要配置复杂的服务端路由与端口映射。
最近出现的开源项目 BitBang CLI 采用了一种优雅的新思路:利用 WebRTC 实现无账号、零配置、点对点(P2P)的端到端加密远程访问。只要在目标机器上运行一个单文件二进制,你就能在任意设备的浏览器中直接获取完整终端、文件管理器以及局域网 HTTP 代理。
BitBang CLI:https://github.com/richlegrand/bitbang-cli
BitBang CLI 只有一个单静态 Go 二进制,只需要在目标机器上(目前主要支持 Linux amd64/arm64/armv7,macOS/Windows 还在开发中):
curl -sSfL bitba.ng/install | sh
bitbang serve
就会输出:
- 一个完整 URL(密钥在 # 后面,浏览器不会发给服务器)
- 二维码
- 一个 6 位配对码(类似 Magic Wormhole 的风格)
用任意浏览器打开这个 URL,就能获得三合一的远程功能集:
- 通用反向代理(LAN Web Proxy):最实用的功能之一,可以直接访问目标机器局域网里的任意 Web 服务
- 完整交互式终端(Web Shell ):支持颜色、窗口 Resize 及剪贴板同步的完整交互式终端
- 文件浏览器(Web File Manager):无需 SCP/SFTP,直接在网页中浏览、预览、下载和上传远程文件
BitBang CLI 的核心亮点:
1. 客户端“零安装”
连接端不需要安装任何 CLI 工具、插件或 VPN 客户端,打开浏览器即可直接操作。无论是在手机、平板还是借用的电脑上,只要输入生成的连接 URL,就能接管远程设备。
2. 真正的点对点(P2P)与端到端加密
去中心化数据流:数据直连通过 WebRTC / DTLS 隧道传输,流量不经过第三方服务器接管。即使在极端网络环境下需要 TURN 中继,中继节点处理的也完全是密文。
无账号与去中心化身份:首次运行时自动生成 RSA 密钥对并导出设备 UID。密钥凭证包含在 URL 的 # 哈希段(Fragment)中,根据 HTTP 规范,浏览器永远不会向信令服务器发送 # 后的内容,保证信令服务器无从知晓解密凭证。
3. 三合一的远程功能集
提供通用反向代理(LAN Web Proxy)、完整交互式终端(Web Shell )、文件浏览器(Web File Manager)功能。
简单说,BitBang CLI 把「远程 Shell + 文件传输 + 局域网 Web 代理」打包成一个单静态二进制,用一条命令就能让任意机器变成可分享的 URL。
由于涉及远程访问局域网,网络安全设计是BitBang CLI重点考虑的,BitBang CLI 的安全设计亮点:
- 设备身份是自认证的:首次运行生成 RSA 密钥对,UID 由公钥派生
- 访问凭证放在 URL fragment 里,信令服务器永远看不到
- 所有业务流量走 WebRTC DTLS,TURN 中继(如果需要)也只看到密文
- 6 位配对码采用 Short Authentication String(SAS)验证,能有效抵抗中间人
- 可选 –pin 和 ephemeral 模式
需要强调一下:把 BitBang CLI 生成的访问 URL 分享给别人就等于把你开启的权限(shell / 文件 / 代理)交给对方,用完记得及时关掉。
适合什么人用?
- 经常需要临时远程家里机器,又不想维护Tailscale、frp之类的人
- 想把某个局域网 Web 服务快速分享给朋友/客户(只给链接)
- 在 CGNAT / 受限网络环境下做开发或调试
- 喜欢「一条命令搞定」哲学的极客