Show HN: BitBang – 从浏览器访问 NAT 后面的机器,无需账户
摘要
BitBang CLI 是一个单一静态二进制文件,让你无需账户或端口转发即可从浏览器访问 NAT 后面的机器,提供 Shell 访问、文件传输和网络代理功能。
查看缓存全文
缓存时间: 2026/07/31 17:00
richlegrand/bitbang-cli 来源:https://github.com/richlegrand/bitbang-cli
BitBang CLI
BitBang CLI 是一个单一的静态二进制远程访问多合一工具:打开交互式 shell、浏览和传输文件,并从任何浏览器访问远程机器网络上的 Web 应用;无需端口转发、无需配置、无需帐户。
测试 (https://github.com/richlegrand/bitbang-cli/actions/workflows/tests.yml)
许可证
安装 bitbang,运行 bitbang serve,然后在浏览器中打开打印出的 URL,即可获得一个 shell、一个文件浏览器以及一个通向该机器网络的代理。
在你想访问的那台机器上:
curl -sSfL bitba.ng/install | sh
bitbang serve
serve 会打印一个 URL。你在任何浏览器中打开它,就能获得一个终端、一个文件浏览器,以及通向那台机器网络的代理;或者用同一个二进制文件,在另一台终端上通过 bitbang connect <url> 连接。连接是端到端加密且点对点的;bitba.ng 服务器只负责介绍两端,然后就会退出。
bitbang 是一个单一的静态 Go 二进制。它是 BitBang 项目 (https://github.com/richlegrand/bitbang) 的一部分;这份白皮书 (https://github.com/richlegrand/bitbang/blob/main/whitepaper.md) 深入介绍了设计。
用 6 位数字配对
当你无法粘贴 URL 或扫描二维码时(比如在打电话,或者在能大声喊话的距离内),bitbang serve 还会打印一个简短的配对码。对方打开 bitba.ng/(或运行 bitbang connect <code>),他们的屏幕上会显示另一个 6 位数字,然后对方把这个数字读给你。你把它输入以批准连接。中间人无法让两个数字匹配,而配对会把设备连接凭据保存下来供下次使用,例如 bitbang connect nas1。
如果你知道 Magic Wormhole (https://github.com/magic-wormhole/magic-wormhole),那么形式类似——通过一段口头代码安全地介绍两台机器。
服务器会打印一个 5 分钟有效的配对码;对方在 bitba.ng 上输入该配对码,他们的屏幕会显示一个 6 位挑战码,需要大声念出来;在服务端机器上输入这个挑战码即可批准连接。
为什么?
- 无需转发或配置任何东西。 在 NAT、CGNAT 或受控网络之后也能工作——无需修改路由器、无需 VPN、无需隧道守护进程。
- 连接端无需安装任何东西。 浏览器就够了。当你需要脚本、管道和文件复制时,也有 CLI 可用。
- 天生私密。 流量走 WebRTC/DTLS,点对点。信令服务器永远看不到数据;如果无法建立直连,TURN 中继也只传输密文。
- 无帐户、无遥测。
为什么不用 SSH?
bitbang 的形状类似 ssh:serve、connect、cp 分别对应 sshd、ssh、scp,只是用 WebRTC 代替 TCP 作为传输层。对于一台你本来就能轻松 SSH 登录的机器,这个差别没什么价值。但 bitbang 的绝大部分动力来自我似乎比想象中更常遇到的一些麻烦:
可达性。 远程 SSH 访问需要一个入站路径,而在大多数网络中,能否开放这个路径并不是你能决定的——CGNAT(蜂窝网络、Starlink、许多 ISP)、企业网、校园网、市政网。所以实际上你得再附加一套系统:Tailscale、VPN、ngrok——又要安装一个东西、注册一个帐户、再跑一个守护进程。bitbang serve 不需要开放任何端口,在任何地方都能工作。
配置。 SSH 必须启用并配置好才会让你登录。它在 Raspberry Pi OS 上默认是禁用的,而且通常只允许密钥登录,这意味着你得先把公钥放到机器上。那你怎么做呢?电子邮件或 U 盘通常是最省事的选择。bitbang 改用 6 位数字交换来建立连接——这在电话里可以安全完成,或者隔着房间喊出来也行。它还以普通用户身份运行——不需要 root、不需要守护进程、不需要配置文件。
代理。 如果你想要那台机器网络上的某个 Web 应用,SSH 会为每个应用单独开一个隧道,而且必须预先命名。bitbang 的代理是通用的:连接时指定 Web 应用的 URL 即可。
浏览器客户端。 SSH 需要在连接端有一个 SSH 客户端和密钥或密码。bitbang 只需要浏览器——也就是说,对方可以是一部手机、一台借来的笔记本电脑,或者一个从未打开过终端的人。把 URL 交给他,他就能获得你授予的访问权限。
使用 bitbang
每个连接都有两端:监听端(bitbang serve,运行在被访问的机器上)和连接端(浏览器,或 bitbang CLI,运行在执行访问的机器上)。同一个监听 URL 可以服务两种连接端。
监听端:bitbang serve
bitbang serve # 全部功能:一个 URL 同时提供 shell + files + proxy
bitbang serve shell # 仅 shell
bitbang serve files ~/share # 仅文件(加 -upload 允许上传)
bitbang serve proxy # 代理;在浏览器中选择目标
bitbang serve proxy localhost:8080 # ... 或固定单个目标
每个命令都会打印二维码、URL 和配对码。
从浏览器连接
打开 URL。根据提供的内容不同,你会得到:
- Shell —— 页面中的完整终端(支持颜色、调整大小、复制/粘贴)。
- 文件 —— 浏览、预览、下载和上传。
- 代理 —— 输入局域网地址(
nas.local、192.168.1.10:8080、localhost:3000/admin),然后像在本地一样使用该应用。登录、Cookie、上传和
相似文章
Show HN: Kage – 将任意网站快照为单个二进制文件,支持离线浏览
Kage 是一个 Go 工具,它通过无头 Chrome 渲染页面、快照 DOM 并剥离 JavaScript,将网站克隆为可离线访问的文件夹。它输出静态 HTML 文件,无需网络即可浏览。
BNA Code
BNA Code是一个CLI代理,旨在直接从终端构建全栈移动应用。
Show HN: Clawk – 为编程代理提供一次性Linux虚拟机,而非你的笔记本电脑
Clawk是一个开源工具,为Claude Code等编程代理提供一次性Linux虚拟机,使其能自由运行而不危及宿主机。它通过网络白名单和文件隔离来保护密钥和系统文件安全。
Show HN: machine0 – 可通过 CLI 控制的持久化 NixOS 虚拟机
machine0 是一个 CLI 工具,用于配置持久化的 NixOS 和 Ubuntu 虚拟机,提供专用资源、静态 IP、按分钟计费,以及挂起/恢复和黄金镜像等功能。
Show HN: Port Zero – 如何学会不再担心并爱上 PORT=0
Port Zero 是一款免费、开源的工具,它为开发服务器分配稳定的本地域名而非端口号,从而消除端口冲突,并支持轻松的多分支开发和云隧道功能。