接入机器
安装客户端
打开「设置 → 接入新机器」,选好权限,复制命令,在机器上以 root 执行:
curl -fsSL https://fleetd.example.com/install.sh | sh -s -- --permission full
没有 curl 的 OpenWrt 用下面的 wget 版:
wget -qO- https://fleetd.example.com/install.sh | sh -s -- --permission full
脚本会:
- 识别 systemd 或 OpenWrt 的 procd,装成系统服务,程序退出后自动拉起;
- 从你的服务端下载对应架构的最新签名版本,并先试运行一次;
- 写入
/etc/fleetd/agent.yaml(权限 600),包括服务端地址和公钥、发布公钥、权限级别,以及后台登记过的所有签名公钥; - 输出这台机器的指纹。
同一条命令可以在多台机器上用。在已经装过的机器上再执行,只会替换程序、保留配置,可以当作手动升级。
参数
| 参数 | 含义 |
|---|---|
--permission monitor|allowlist|full | 签名命令在这台机器上能做什么(默认 monitor) |
--server URL | 客户端连接地址,例如内网的 ws://10.0.0.1:8480/agent/ws |
--signer KEY | 额外信任一把签名公钥,可以重复;后台登记的公钥总是会带上 |
批准或拒绝
新机器会出现在「机器 → 等待批准」里,显示主机名、来源 IP 和指纹。只有指纹和安装时输出的一致(或和机器上 fleetd-agent fingerprint 的输出一致)才批准。批准之前,它发来的数据一概不收,也收不到命令。
批准后客户端会在一分钟内重新连接并开始上报。
不认识的机器点「拒绝」。它的公钥会进入拒绝名单,之后再连会在握手阶段被挡掉。被拒绝的机器列在「设置 → 已拒绝的机器」,可以解除。
提示
任何能访问到服务端的人都能申请批准,所以待批准的机器最多 50 台。真正授予权限的是批准这一步,核对指纹很重要。
权限级别
每台机器的权限写在它自己的 /etc/fleetd/agent.yaml 里,服务端改不了。
| 级别 | 允许 |
|---|---|
monitor | 只上报监控数据,拒绝所有命令和终端 |
allowlist | 只能执行配置里定义好的动作,参数固定 |
full | 以 root 执行任意命令,以及网页终端;仍然必须用受信任的密钥签名 |
白名单的写法:
permission: allowlist
allowlist:
restart-nginx: [systemctl, restart, nginx]
reload-wireguard: [systemctl, reload, wg-quick@wg0]
改完配置后重启客户端:systemctl restart fleetd-agent,OpenWrt 上是 /etc/init.d/fleetd-agent restart。
信任的签名公钥
客户端配置里的 trusted_signers 列出它接受哪些管理员密钥签的命令。一键安装时会自动填入「设置 → 签名密钥」里登记的公钥。之后新增了密钥(换了浏览器、增加了管理员),要手动加到之前装好的机器上:
trusted_signers:
- <原来的公钥>
- <新公钥>
要撤销一把密钥,需要在每台机器的这个列表里删掉它。在后台删除只会让之后新装的机器不再信任它。
改名和删除
点机器名旁边的铅笔图标改名。「删除机器」会删除记录和历史数据;如果客户端还在运行,它会重新出现在等待批准里。要彻底移除,请先卸载客户端,或在等待批准时点「拒绝」。
卸载客户端
systemctl disable --now fleetd-agent
rm -f /etc/systemd/system/fleetd-agent.service /usr/local/bin/fleetd-agent*
rm -rf /etc/fleetd /var/lib/fleetd
/etc/init.d/fleetd-agent disable; /etc/init.d/fleetd-agent stop
rm -f /etc/init.d/fleetd-agent /usr/bin/fleetd-agent*
rm -rf /etc/fleetd
sed -i '\#^/etc/fleetd/$#d' /etc/sysupgrade.conf