最近更新: 2026-07-08
当两台机器都是你自己的,并且彼此知道对方地址时,SSH 是多余的摩擦,中转撮合纯属多余开销。守护进程直连正是为此而生:一台服务器监听,另一台通过锁定的 TLS 1.3 连接直接推送过去。无需中继、无需 SSH、无需配对码——信任基于公钥,只需设置一次。
本指南涵盖启动监听端、向其推送、在首次联系时批准新的推送方、实现自动化,以及把监听端作为 systemd 服务运行。
在接收方服务器上,serve 监听推送并把它们写入某个目录。它默认长期运行;加上 --once 可以只接受一次传输就退出。你不需要预先共享任何东西——不用提前复制任何指纹:
# on the RECEIVER
relayium serve --dir ~/inbox # add --once for a single transfer; --port to change 9031
从发送方服务器,推送到接收方的 relayium:// 地址。第一次连接会锁定接收方的指纹;此后每次连接都会校验它,指纹一旦变化就会被拒绝而不是被默默接受——因此密钥被替换或中间人攻击会被发现,而不是被信任。在第一次推送时,发送方会稍等片刻,等待接收方批准(下一步)。
# on the SENDER
relayium push ./build.tar.zst relayium://receiver.example.com
# non-default port
relayium push ./build.tar.zst relayium://receiver.example.com:9040
当一台新机器第一次向你的监听端推送时,serve(在终端中)会显示它的来源和指纹,并请你批准它——就像 SSH 首次连接时的提示,只不过是在接收方这一侧:
# on the RECEIVER, when a new sender pushes:
Incoming push from 203.0.113.7:54021
fingerprint: 74318e3b…
Accept and remember this peer? [y/N] y
由于已批准的指纹会被记住,后续推送不再需要确认——因此 relayium push 可以直接接入 cron、部署脚本或 CI,实现加密、可校验完整性、可续传的服务器到服务器同步。当 serve 在没有终端的环境下运行(作为 systemd 服务、通过管道)时,它无法弹出提示,因此会拒绝未知的推送方;这时应改为预先授权它们。可以从推送方的 relayium id 获取指纹,或者从 serve 日志中 “rejected unauthorized peer …” 那一行复制它,然后:
# on the RECEIVER: pre-authorize a sender without a prompt
relayium authorize 74318e3b...
要做一个常驻收件箱,把 serve 作为 systemd 服务运行。把 --config-dir 指向一个固定位置,例如 /etc/relayium,让身份在重启之间保持稳定,并交给 systemd 来保活:
# /etc/systemd/system/relayium-serve.service
[Unit]
Description=Relayium daemon-direct listener
After=network-online.target
[Service]
ExecStart=/usr/local/bin/relayium serve --dir /srv/inbox --config-dir /etc/relayium
Restart=always
User=relayium
[Install]
WantedBy=multi-user.target
通过 SSH 推送会把传输隧道进你的 SSH 连接,并且需要在远端有一个 SSH 账号。守护进程直连不需要 SSH,也不需要账号——两台服务器通过锁定的 TLS,用证书指纹互相验证身份,当两台机器都是你自己的时候,这样更轻量。
不需要。在终端中,serve 会在每个新推送方首次推送时提示你批准它——显示其地址和指纹——并记住它,因此后续推送是静默的。只有在没有终端的非交互式场景(比如作为 systemd 服务运行,没有人来回应提示)时,你才需要用到 relayium id 或 relayium authorize。
默认在 ~/.config/relayium/ 中(可用 --config-dir 覆盖)。id.key / id.crt 是这台主机的持久身份,known_hosts 保存着你推送过的监听端的指纹,authorized_fingerprints 则是监听端的推送方允许列表。
推送会被拒绝并发出警告。监听端的密钥在首次使用时就被锁定在 known_hosts 中,因此之后的变化——无论是主机重新生成了密钥,还是中间人攻击——都会被拒绝而不是被默默接受。只有在你确实主动轮换了密钥时,才应删除 known_hosts 中对应的那一行。
没有。守护进程直连假定监听端地址是可达的;如果无法建立连接,就会失败。任何数据都绝不会经由 Relayium 代理——这正是这个模式的意义所在。
把你自己的两台服务器接起来做直接传输——无需中继、无需 SSH、无需配对码。
获取 CLI