Relayium

用 Relayium CLI 跨网络把文件发给对方

最近更新: 2026-08-07

有时候对方的机器不是你的,你也没法用 SSH 登录进去——给另一个办公室的同事发个文件,给客户发个构建产物,给国外的朋友发个压缩包。relayium send 和 receive 会跨网络把文件直接送到你们两个之间,靠的只是发送时 CLI 为你生成的一个简短配对码。

连接是点对点、端到端加密的。只有一次极小的会合握手会经过 Relayium 来介绍双方;文件字节从不经过。

开始之前

下面用到的都是 relayium CLI,所以没装的话先装上。在 macOS 或 Linux 上,一条命令就能把预编译二进制放进你的 PATH:

curl -fsSL https://relayium.com/install.sh | sh

先 send,再把打印出来的码转告对方

你需要准备

  • 两台机器上都装好 CLI。在各自终端里 relayium version 会打印版本号;如果 shell 回的是 “command not found”,说明那台还没装。
  • 发送方已登录。relayium whoami 会打印账号邮箱;生成配对码之前必须先 relayium login。接收方那台机器全程不用登录。
  • 两个人同时守在终端前。码只有五分钟寿命,所以先约好时间再生成。
  • 一个能把六位数字带外告诉对方的渠道——一通电话、一个聊天窗口,或者你们同处的那个房间。

用 relayium login 登录一次,然后直接 send 就行。CLI 会生成一个配对码,连同对面要执行的完整命令一起打印出来,然后等待。把这个码用带外方式转告对方——打电话说一下,或者丢进聊天里:

  1. 在发送方机器上登录一次。如果 relayium whoami 已经能打印出你的账号邮箱,就跳过这步。

    relayium login
  2. 在文件所在目录里开始发送。CLI 会生成配对码,打印出对面要执行的命令,然后等待。

    relayium send ./release.zip
  3. 把它打印出来的六位数字用带外方式念给对方。这串数字在生成五分钟后就不再有效。

  4. 在接收方机器上,切到文件该落地的目录,执行发送方看到的那条命令。想放到别处就在后面加一个目录。

    relayium receive 483920
    relayium receive 483920 ./downloads
  5. 两边的终端都别关,直到接收端回到 shell 提示符。这是一次实时会话:任何一端关掉,传输就停了。

成功时你会看到什么

发送方先打印交接信息块并等待,然后打印校验码和它拿到的路径。两边终端显示同一个校验码,而且都以 0 退出。

# 发送方
Code: 483920   (valid 5 minutes)
On the other machine:  relayium receive 483920
  not installed there?  curl -fsSL https://relayium.com/install.sh | sh
waiting for the receiver…
verification code (SAS): 271044 — not the pairing code; compare it on both ends to rule out a substituted endpoint
path: direct

用 SAS 码验证

两端连接建立后,两边的终端会打印出同一个从固定 TLS 证书指纹派生的 6 位 SAS(简短认证串)。通过带外方式核对——例如在通话中念出来——可以确认指纹没有被替换、会合服务没有冒充任一端。SAS 认证的是端点,并不证明网络路径上的每一跳。

为获得最强保护,加上 --verify:传输会等你确认两边的码一致后,才会移动哪怕一个字节。

relayium send --verify ./release.zip

只走直连——免费,否则失败

传输会在两端之间竞速建立直连。一旦能建立——这是常见情况,只要至少一方有可达地址——文件就会直接、加密地全速传输,不收费。

Relayium CLI 的 send/receive 和 text 都只走 P2P 直连:文件或消息字节绝不会通过 TURN 或任何其他 Relayium 服务器中继。两端无法建立直连时,会话会直接失败,不会回退到中继。

如果遇到这种情况,可靠的办法是在两台可达的服务器之间用 daemon 直连、用 SSH push,或者通过 relayium up 创建存储链接。

传不过去的时候

几乎所有失败都落在下面四种里。每一种都有一行可读的输出或一条可执行的命令来判定,你不必靠猜来判断是哪一端出了问题。

现象、检查、修复

发送方直接拒绝启动:“minting a pairing code needs an account”。
relayium whoami
# not logged in (run `relayium login`)

这台机器上没有存下凭据。运行 relayium login 并在浏览器里批准;之后 whoami 就能打印出账号邮箱,发送也能继续。此时还没有生成过码,所以没浪费任何一个。

接收方输入了码,会合服务却不认。
# 发送方——交接信息块里写着确切的有效期
relayium send ./release.zip
Code: 483920   (valid 5 minutes)

码过期了。在发送方按 Ctrl-C,重新运行 relayium send ./release.zip,然后在新交接信息块写明的五分钟内把新的六位数字念过去。

两边终端打印出的校验码不一样。
relayium send --verify ./release.zip

停下,别把文件发出去。校验码不一致意味着两端固定下来的证书指纹对不上,也就是说对面那台机器并不是你以为的那台。用 --verify 重跑一次,它会在这一步停住等你确认,同时跟对方核对他们到底在哪台机器上操作。

“no direct connection to the peer (both ends behind strict NAT?)”。
relayium send ./release.zip
# no direct connection to the peer (both ends behind strict NAT?): …

两端谁也够不着谁,而 CLI 刻意如此,没有给文件字节留任何中继通路。把其中一端换到有可达地址的网络上——一台服务器,或者手机热点——或者改用 relayium up 上传文件,把下载链接交给对方。

常见问题

配对码是从哪来的?

由 Relayium 生成。登录后运行 relayium send ./release.zip,CLI 会打印一个 6 位数字、5 分钟内有效的码,以及对面要执行的完整命令。这个码不能自己指定——服务器只认它自己签发的。

文件会上传到什么地方吗?

不会。文件在你们两个之间直接流式传输,端到端加密。只有一次很小的会合握手会经过 Relayium 来介绍双方——文件本身从不经过。

如果连接不上怎么办?

如果两端都在严格 NAT 之后、没有可达地址,就无法建立直连,传输会失败——CLI 按设计没有中继兜底。当没有直连路径时,可以在两台可达的服务器之间用 daemon 直连,或者用 SSH push。

我怎么知道对面真的是对的人?

两边的终端会打印出一个从固定 TLS 证书指纹派生的相同 6 位 SAS 码。通过带外方式核对;一致就能确认指纹没有被替换、会合服务没有冒充任一端。它认证的是端点,而不是网络路径上的每一跳。加上 --verify 可以要求在任何字节移动之前先完成这个确认。

把你的下一个文件直接发给另一个网络上的人——端到端加密,而且免费。

获取 CLI

继续阅读