返回更新列表
新发布Sep 2, 2026

bitbang-cli v0.5.0

通过端到端加密的点对点 WebRTC,使用浏览器或 CLI 即可建立对机器的安全远程访问,支持交互式 shell、文件传输和 Web 代理,无需端口转发或账户。

分享

BitBang CLI

Tests License

bitbang 是一个单一静态二进制文件的远程访问多功能工具。从任意浏览器即可:对远程机器进行交互式 shell 和文件浏览器访问。你还可以访问该机器所在网络上的 Web 应用。除浏览器之外,它还支持 TCP 端口转发、文件复制和终端共享。它无需账户或配置——开箱即用。

安装 bitbang,运行 bitbang serve,然后在浏览器中打开打印出的 URL,即可获得 shell、文件浏览器以及通往该机器网络的代理

在你想访问的机器上:

curl -sSfL bitba.ng/install | sh
bitbang serve

serve 会打印一个 URL。在任意浏览器中打开它,你就会得到一个终端、一个文件浏览器,以及一个通往该机器网络的代理——或者从另一个终端使用 bitbang connect <url> 连接到同一台机器,这会增加端口转发(-L)和文件复制(bitbang cp)功能。连接是端到端加密且点对点的;bitba.ng 服务器负责介绍两端认识,然后便退到一旁。

bitbang 是一个单一的静态 Go 二进制文件。它是 BitBang 项目的一部分;这份白皮书深入介绍了其设计。

对比

ngrokTailscalebitbang
首次使用前的设置账户 + authtoken账户 + 在每台设备上登录运行一条命令
要共享内容,你需要运行一个 Web 服务器,外加 ngrok在两端机器上运行他们的客户端bitbang serve
远端浏览器获得的内容你原本就在运行的 Web 服务器什么都没有——它需要他们的客户端一个终端、一个文件浏览器,以及远程网络上的 Web 应用
数据路径他们的服务器P2P(中继回退)P2P(中继回退)
端到端加密默认不加密是是

快捷配方

访问家中的服务

进入某台机器

与他人共享

共享只需给某人一个唯一的 URL 或二维码,即可让他们获得访问权限。权限可以定制,并设置为在几分钟、几小时等时间后过期。

开发与设备

技巧

使用 bitbang

每个连接都有两端:一个监听器(bitbang serve,运行在被访问的机器上)和一个连接器(浏览器,或执行访问的机器上的 bitbang CLI)。一个监听器 URL 可同时服务这两种连接器。

监听器:bitbang serve

bitbang serve                    # everything: shell + proxy + files + forward
bitbang serve shell              # just a terminal
bitbang serve files ~/share      # just a directory (-files-upload to allow uploads)
bitbang serve proxy localhost:8080       # just one web app, straight at the URL
bitbang serve proxy a.lan:80,b.lan:80    # ...or several, chosen in the browser
bitbang serve forward 127.0.0.1:22       # just TCP, for `connect -L`

bitbang serve shell files ~/share proxy nas.lan:8096   # any combination

每个都会打印一个二维码、URL 和一个配对码。模式决定了监听器能做什么:serve shell 没有可授予的转发权限,而仅转发的监听器永远不会启动 shell,因此没有可提升的权限。

有一个值得了解的默认行为:转发和代理可以访问监听器能到达的任何 host:port,而不仅仅是你心中所想的那个,因此为数据库分发的链接也能访问该网络中的其他部分。以该词命名目标可以缩小范围——forward db.internal:5432 只能访问该目标,不能访问其他任何内容。

共享正在运行的会话:bitbang share

serve shell 会启动一个新的 shell。share 则发布一个已经在运行的 tmux 会话:

bitbang share                    # publish the current tmux session
bitbang share --read-only        # publish without a control URL
bitbang share status|stop|rotate

该命令在发布后返回,因此 Ctrl-Z、bitbang share、fg 可用于已在进行的任务。托管需要 Unix 或 WSL 上的 tmux 3.2+。原生 Windows 客户端可以打开 URL,但无法托管共享。

默认情况下,该命令会打印两个 bearer URL:

  • Control URL 可以以与本地键盘相同的权限进行输入。一次只能连接一个控制器。
  • View URL 是仅观看模式。输入会在到达 tmux 之前被丢弃,最多可同时连接 --max-viewers 个观看者(默认 16)。

--read-only 会完全省略控制凭据。观看者和控制器限制会在每个连接的整个生命周期内保持,甚至在它打开 shell 之前也是如此。

默认情况下,共享会一直运行直到停止;--ttl 可设置生存时间(例如 --ttl 1h)。共享 URL 是临时的,绝不会保存到 devices.json。share stop、TTL 到期或移除源会话会断开远程对等端,但不会停止源会话。

重新运行 bitbang share 会重新打印正在运行的共享的 URL。如果你传入的某个标志与当前运行状态不一致(比如对一个已有控制 URL 的共享使用 --read-only),它会明确说明,而不是返回旧 URL;bitbang share rotate 会用使用新标志的共享替换当前共享。

后台工作进程运行在一个分离的 _bbshare_* tmux 管理会话中,因此没有守护进程或 PID 文件需要管理。

共享不会更改任何 tmux 选项。在 tmux 默认的 window-size latest 下,窗口会跟随活动的读写客户端;单独的观看者仍然会提供唯一可用的尺寸。如果 window-size 已被覆盖,share 会报告这一点,但不会更改用户的配置。

一个监听器、一个 URL,以及任意数量的访问链接。每个链接都是同一 URL 上的独立代码,授予监听器所提供权限的子集,并可选地在固定时间失效:

bitbang link edit                # add entries in $EDITOR
bitbang link ls                  # what you have handed out
bitbang link rm <label>          # revoke one
bitbang link qr <label>          # its URL and QR code

~/.bitbang/bitbang/links.json 中的每个条目都是一行 JSON。无需编写代码即可写入一条,在其控制台重新加载监听器,它便会生成一条:

[
  {"label": "ana",  "grant": "files", "expires": "2026-09-01T00:00:00Z"},
  {"label": "ben",  "grant": "files /srv/photos"},
  {"label": "dev",  "grant": "shell forward 127.0.0.1:5432"}
]
  0) owner  files forward proxy shell
     https://bitba.ng/8ach_I7oQk2vBb9xYzT0Lw#_vtQ0JCPe7s
  1) ana    files  expires in 6d
     https://bitba.ng/8ach_I7oQk2vBb9xYzT0Lw#T-Ty_HhvLfY
  2) ben    files /srv/photos
     https://bitba.ng/8ach_I7oQk2vBb9xYzT0Lw#L6La8OzBO74
  3) dev    forward 127.0.0.1:5432 shell
     https://bitba.ng/8ach_I7oQk2vBb9xYzT0Lw#8kmI3LYzB7E

owner 是身份自身的代码,授予监听器所提供的一切;请改为发送其他身份之一。控制台既接受标签也接受其旁边的编号,因此 rm 2 和 rm ben 效果相同。

分类