
Julio Merino 推出 ZKeys 服务,让加密磁盘的 ZFS 服务器可无人值守重启
来源标题:Unattended reboots with encrypted disks (ZFS)
Julio Merino 发布 ZKeys,一项在异地托管加密口令的服务,让加密磁盘的服务器能在无人输入口令的情况下自动重启。客户端机器从该服务获取密钥,并通过定期 keepalive 消息保持密钥解锁状态;若服务器长时间收不到这些消息(例如被盗后断电),密钥便会失效。该项目旨在兼顾自动重启的便利性与磁盘加密的数据保护。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
Julio Merino 2026年11月7日 3 分享 你是否运行着一台小型家用服务器或NAS,用来存放珍贵的照片和敏感文件?如果是的话,我猜硬盘都做了加密吧?但这样一来……你能在不手动输入密码短语的情况下重启机器、让文件重新可访问吗? 如果你对上面的问题回答"是"——这出于便利很常见——那意味着加密密钥就存放在机器上,而……这多少让磁盘加密失去了意义,不是吗?小偷可以闯进你家,把整个盒子搬走(如今这些设备都很小,对吧),插到别处,就能随意读取你的文件。 那么,到底选哪条路?是允许自动重启带来的简单与可靠,还是把密钥留在脑子里带来的数据保护?有了ZKeys——我今天发布的一个小项目——你可以两者兼得。 TL;DR ZKeys是一项托管服务,将加密密码短语存储在异地。客户端机器从该服务获取加密密钥,并通过周期性的keepalive消息让这些密钥保持存活(解锁)。 如果服务器长时间收不到这些消息(例如因为设备作为盗窃的一部分被拔掉电源),对密钥的访问就会自动锁定。这样你既能获得自动的、无需密码的重启,又能保护数据免受真实事件的影响。 你知道吗?订阅Blog System/5,就是在支持本内容和本软件的创作。 大约一年前,我在短暂使用一台Synology设备之后,重新安装了FreeBSD家用服务器来充当NAS。在此过程中,我决定为ZFS数据池启用加密。但这样做时,我面临一个问题:如何让机器在重启后自动提供数据服务?我可以把密钥放在本地文件中,FreeBSD通过ZFS的keylocation选项支持这种做法,但那会让磁盘加密几乎形同虚设。 于是我有了一个想法:如果把密钥放在我家之外的另一台机器上呢?这样我就能让NAS获取密钥来挂载硬盘。如果服务器被盗,我可以在小偷把设备插回去之前清除远程密钥,让数据无法读取。我确实把这个想法发到了Twitter上,引起了一些兴趣: Julio Merino@jmmv 愚蠢还是聪明?我写了一个启动rc.d脚本,通过从远程服务器获取密钥来自动挂载加密的ZFS池。我想要防范的是"硬盘从家中被盗"的情况。如果发生这种情况,我可以迅速删除密钥。 凌晨2:35 · 2025年9月7日 · 1.42K次浏览 3条回复 · 3次转发 · 15次点赞 但是……你注意到我上面所说的问题了吗?在发现异常后手动清除密钥是有问题的,因为这两个事件之间的间隔可能很大。如果我正在度长假,无法察觉机器被盗呢?那就完了。 于是我完善了这个想法:如果有一个服务在远程存储密钥,并要求使用方机器频繁发送ping以保持密钥解锁,会怎样?这样一来,如果机器被盗,它很可能离线超过几分钟,服务就能自动判断出了问题,并锁定密钥,阻止未来的访问。而这正是ZKeys所做的。 在深入细节之前,有一点需要先说清楚:ZKeys的设计使得攻陷服务器不足以获取或重建你的密钥。这通过两种方式实现: 拆分密钥:ZKeys服务器只存储用于解锁卷的密码短语的一半。另一半保留在客户端机器上。zkeys客户端程序将两半合并,生成完整的密码短语。 静态加密:密钥在静态存储时用密码加密,zkeys客户端必须提供该密码才能取回密钥,且密码通过HTTPS安全传输。密码只在服务器内存中短暂存在。 代价很简单:你必须在自己的第三个位置备份完整的加密密钥(保险箱里的一张纸、密码管理器,随你选)。如果ZKeys宕机,或者你丢失了远程密钥密码,我绝对帮不了你。事先警告。后面的设置说明会告诉你如何备份密钥。 ZKeys服务可在https://zkeys.jmmv.dev/ 访问,开源客户端——以及面向FreeBSD和Fedora的系统集成——位于我的jmmv/zkeys仓库中。 免责声明:ZKeys免费提供给你。我不对其可靠性、可用性或任何其他方面作任何承诺。我之所以给你访问权限,是因为我预计多支持少数几个用户不会是大问题。但如果支持成为负担,或者负载变得难以管理,我将不得不重新评估这里的选择。这意味着,目前你必须使用有限的LAUNCH50码才能开始! 设置ZKeys的基本思路如下: 创建一个新密钥(或接入现有密钥)。 在目标机器上配置keep-alive服务。 将文件系统加密密钥更改或添加为存储在ZKeys中的那个。 在目标机器上配置自动挂载服务。 就这么几步,但目前这些步骤相当手动,因为没有上游操作系统提供软件包。服务文档针对FreeBSD和Fedora详细介绍了多种场景,所以我就不在这里重复了。 ZKeys与Fedora 44(根卷完全加密)集成的演示:视频首先展示一次完全无人值守的启动,接着手动锁定一个密钥,导致Fedora拒绝自行重启,最后在密钥再次解锁后进行另一次自动重启。 现在来说说技术宅的细节,因为你们就是为此而来的:
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。