Systemd:如何从 USB 加载 LUKS 密码,然后返回键盘?

Systemd:如何从 USB 加载 LUKS 密码,然后返回键盘?

我想设置一台具有全磁盘加密功能的无头 GNU/Linux (Ubuntu 20.04) PC,能够使用 USB 驱动器或通过键盘输入密码来解锁磁盘。我的起点是使用安装程序中的基本全磁盘加密选项进行全新安装,该选项将除 /boot 之外的所有内容作为 LUKS 加密的逻辑卷组进行管理,并为我提供键盘选项。

如果我能拥有一个包含可解锁磁盘的密码的小 USB 记忆棒,那对我来说将是理想的选择。这不仅对服务器很方便(您可以将 USB 记忆棒留在服务器中 - 目标是能够返回损坏的硬盘,而不必担心机密数据),而且对我的笔记本电脑也非常有用:启动时使用 USB 记忆棒,解锁加密盘后将其移除。如果 USB 磁盘损坏,请使用键盘。

如何才能以一种可在运行的系统上运行的方式来完成此操作systemd

(如果这个问题看起来很熟悉,那是因为:https://stackoverflow.com/a/23451824/363028- 解决了问题,但与 systemd 不兼容。)

背景

在我的非 systemd 系统上我使用这个补丁https://gitlab.com/ole.tange/tangetools/tree/master/decrypt-root-with-usb

它在所有设备的根目录中搜索文件“cryptkey.txt”,并尝试使用每一行作为密钥进行解密。如果失败:恢复输入密码短语。

它完全按照我想要的方式工作,但是 systemd 打破了这一点,所以我不能使用它(至少不能直接使用)。

答案1

我什至不需要深入研究实际的启动过程systemd,但只需进行少量更改即可使用我的补丁。这是 Ubuntu 20.04 LTS 的更新版本: https://gitlab.com/ole.tange/tangetools/-/tree/master/decrypt-root-with-usb/ubuntu-20.04

相关内容