重用 LUKS 主密钥文件在启动时解密分区

重用 LUKS 主密钥文件在启动时解密分区

我正在小型 PC 中重复使用笔记本电脑的硬盘驱动器。 PC 是一台偶尔使用的计算机,除了休眠的虚拟机之外什么都没有,我通过 RDP 连接到它。计算机大部分时间处于断电状态。我可以通过 LAN 唤醒它,然后唤醒我需要的虚拟机。问题是,当我重新使用笔记本电脑硬盘时,我只是启动它,更新 Fedora 31 并继续使用它。

SSD 有两个分区:sda1/boot,是一个包含、和交换分区sda2的 LUKS 卷。问题是,当我从网络启动计算机时,它要求输入密码来解密。//home/dev/sda2

这是lsblk

NAME                                          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                                             8:0    0 465.8G  0 disk  
├─sda1                                          8:1    0   500M  0 part  /boot
└─sda2                                          8:2    0 465.3G  0 part  
  └─luks-151aef9f-a994-4495-a532-63899b1720d4 253:0    0 465.3G  0 crypt 
    ├─fedora_patchtop-root                    253:1    0    50G  0 lvm   /
    ├─fedora_patchtop-swap                    253:2    0   3.9G  0 lvm   [SWAP]
    └─fedora_patchtop-home                    253:3    0 411.4G  0 lvm   /home
sr0                                            11:0    1  1024M  0 rom   

正如你所看到的,/dev/sda1其中包含/dev/boot的是不是加密的。

我希望我可以在启动时摆脱密码提示,因为这台计算机不再在我需要硬盘加密的环境中使用,而是我需要无人值守的启动功能。

现在,/dev/sda2有一个钥匙槽正在使用(槽 0)。

我做的第一件事是转储密钥文件,如下所示:

cryptsetup luksDump /dev/sda2 --dump-master-key --master-key-file master.key

然后我输入了master.key/boot因此它可以在未加密的分区上使用:

-r--------. 1 root root 64 Apr 18 10:15 /boot/master.key

现在到/etc/crypttab.我的 crypttab 只有一行,如下所示:

luks-151aef9f-a994-4495-a532-63899b1720d4 UUID=151aef9f-a994-4495-a532-63899b1720d4 none

我将其更改为:

luks-151aef9f-a994-4495-a532-63899b1720d4 UUID=151aef9f-a994-4495-a532-63899b1720d4 /boot/master.key luks,initramfs

最后,我用 dracut 创建了一个新的 initramfs,如下所示:

dracut -vfN

但是,重新启动后,系统仍然要求我输入密码。

我还尝试制作一个新的密钥文件,并使用它作为 LUKS 设置的插槽 1 的密钥,它仍然不断询问我应该手动输入的密码。但是我不确定它是否一直要求我输入密码,因为插槽 0 仍然是手动密码,而且它只是从顶部开始,等等。

作为参考,这里是我的分区的 UUID,如果这很重要的话:

NAME                                          UUID                                   MOUNTPOINT
sda                                                                                  
├─sda1                                        43f00ca0-60d2-4c20-9b20-4ec914c575cf   /boot
└─sda2                                        151aef9f-a994-4495-a532-63899b1720d4   
  └─luks-151aef9f-a994-4495-a532-63899b1720d4 RlyNgN-3ca3-cqvW-iljT-meWT-eqTO-h02Xh6 
    ├─fedora_patchtop-root                    60a53d2a-db9b-47be-991f-cdbdcfd8e72d   /
    ├─fedora_patchtop-swap                    ef05de8f-cd1e-4491-b837-80656b91dc60   [SWAP]
    └─fedora_patchtop-home                    7b457fab-02a9-40f9-a22b-e0c16be2f137   /home

编辑

我又尝试了一件事:

首先,我创建了一个非常简单的密码:

cryptsetup luksAddKey /dev/sda2 --force-password

密码实际上是空的。主要原因是,如果我在这一点上遇到困难,我只需要在密码提示时按回车键即可。这效果相当好。

接下来,我将上述密钥添加到插槽 0 中:

cryptsetup luksChangeKey /dev/sda2 /boot/master.key --key-slot 0

我这样做的主要原因是因为我在 cryptsetup 的手册页中读到,密钥插槽是按顺序检查的。所以插槽 0,然后是插槽 1,等等。我想也许它仍然要求输入我的密码,因为那是插槽 0。所以,我使用了插槽 0 的密钥文件,这样密码就是第二插槽 1 中的选项。

再次,我生成了一个新的 initramfs 并重新启动,但没有雪茄。它仍然要求输入密码,但这一次,只需按回车键就足以启动它。

然而,情况仍然不尽如人意。我仍然需要在密码提示处按 Enter/Return 才能启动系统。这要求我至少在机器上连接一个键盘,但我的想法是,它几乎完全是无头的。所以没有显示器,也没有键盘。

相关内容