用 Relayium CLI 跨网络把文件发给对方
最近更新: 2026-08-07
有时候对方的机器不是你的,你也没法用 SSH 登录进去——给另一个办公室的同事发个文件,给客户发个构建产物,给国外的朋友发个压缩包。relayium send 和 receive 会跨网络把文件直接送到你们两个之间,靠的只是发送时 CLI 为你生成的一个简短配对码。
连接是点对点、端到端加密的。只有一次极小的会合握手会经过 Relayium 来介绍双方;文件字节从不经过。
开始之前
下面用到的都是 relayium CLI,所以没装的话先装上。在 macOS 或 Linux 上,一条命令就能把预编译二进制放进你的 PATH:
curl -fsSL https://relayium.com/install.sh | sh
- 想自己挑文件,或在 Windows 上?从发布页下载二进制——relayium.com/cli 列出了所有安装方式(装了 Go 也可 go build -o relayium ./cmd/relayium)。
- relayium --version 可确认是否装好。不装这一步,下面的命令只会报 “command not found”。
先 send,再把打印出来的码转告对方
你需要准备
- 两台机器上都装好 CLI。在各自终端里 relayium version 会打印版本号;如果 shell 回的是 “command not found”,说明那台还没装。
- 发送方已登录。relayium whoami 会打印账号邮箱;生成配对码之前必须先 relayium login。接收方那台机器全程不用登录。
- 两个人同时守在终端前。码只有五分钟寿命,所以先约好时间再生成。
- 一个能把六位数字带外告诉对方的渠道——一通电话、一个聊天窗口,或者你们同处的那个房间。
用 relayium login 登录一次,然后直接 send 就行。CLI 会生成一个配对码,连同对面要执行的完整命令一起打印出来,然后等待。把这个码用带外方式转告对方——打电话说一下,或者丢进聊天里:
在发送方机器上登录一次。如果 relayium whoami 已经能打印出你的账号邮箱,就跳过这步。
relayium login在文件所在目录里开始发送。CLI 会生成配对码,打印出对面要执行的命令,然后等待。
relayium send ./release.zip把它打印出来的六位数字用带外方式念给对方。这串数字在生成五分钟后就不再有效。
在接收方机器上,切到文件该落地的目录,执行发送方看到的那条命令。想放到别处就在后面加一个目录。
relayium receive 483920relayium receive 483920 ./downloads两边的终端都别关,直到接收端回到 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- 这个码是 6 位十进制数字——0-9 都可能出现,也可能以 0 开头——并且在生成 5 分钟后失效。
- 这个码只是一个用来会合的共享密钥;除了会合服务器,它不会发给任何人,而且只用来介绍双方。
- 两端都必须是 CLI——浏览器无法加入 CLI 的配对码。如果对方只有浏览器,请改用 relayium up,它会给你一个下载链接。
用 SAS 码验证
两端连接建立后,两边的终端会打印出同一个从固定 TLS 证书指纹派生的 6 位 SAS(简短认证串)。通过带外方式核对——例如在通话中念出来——可以确认指纹没有被替换、会合服务没有冒充任一端。SAS 认证的是端点,并不证明网络路径上的每一跳。
为获得最强保护,加上 --verify:传输会等你确认两边的码一致后,才会移动哪怕一个字节。
relayium send --verify ./release.zip
只走直连——免费,否则失败
传输会在两端之间竞速建立直连。一旦能建立——这是常见情况,只要至少一方有可达地址——文件就会直接、加密地全速传输,不收费。
Relayium CLI 的 send/receive 和 text 都只走 P2P 直连:文件或消息字节绝不会通过 TURN 或任何其他 Relayium 服务器中继。两端无法建立直连时,会话会直接失败,不会回退到中继。
如果遇到这种情况,可靠的办法是在两台可达的服务器之间用 daemon 直连、用 SSH push,或者通过 relayium up 创建存储链接。
- 直连成功 → 免费、全速、端到端加密。
- 两端在地理上可以在任何地方——发送方直接运行 send,接收方用它打印出来的码运行 receive。
传不过去的时候
几乎所有失败都落在下面四种里。每一种都有一行可读的输出或一条可执行的命令来判定,你不必靠猜来判断是哪一端出了问题。
现象、检查、修复
- 发送方直接拒绝启动:“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