更新 /etc/crypttab

更新 /etc/crypttab

以下是我的配置: - 2 个硬盘,- 第一个使用 LUKS 和 LVM 加密。我想在卷组中添加第二个硬盘。我已成功安装并加密。但启动时,我必须输入 2 个密码才能解密两个硬盘。

有没有办法只使用一个?

答案1

我最终找到一个技巧,只需输入一个密码即可加密所有物理磁盘。

我使用密码加密第一个,使用存储在第一个硬盘(/root/mykeyfile)上的密钥文件加密第二个。

使用 /etc/crypttab 文件中正确的行,就可以解决问题。

更新 /etc/crypttab

sda5_crypt UUID=fb07f1e8-a569-4db9-9fd7-fc1994e093b5 无 luks

sdb1_crypt UUID=4c0687f0-d7af-4f2e-9c57-5ca8e909d492 /root/mykeyfile luks

答案2

在 ubuntu 上,可以使用从根目录派生的密钥作为其他文件系统上的附加密钥。这样做的好处是可以将其他驱动器的密钥保留在文件系统本身之外。

在执行此操作之前,首先确保 /tmp 仅安装在内存上!我建议使用单用户模式进行此更改。

mount -t ramfs none /tmp

然后,您可以导出派生的密钥:

# replace vda5_crypt with the cryptsetup name of your root luks
# have a look in /dev/mapper or 'pvdisplay' to find it...
/lib/cryptsetup/scripts/decrypt_derived vda5_crypt > /tmp/key

然后将其添加到您的其他设备:

# use your own disks here instead of sdb1 sdc1 sdd1 etc
cryptsetup luksAddKey /dev/sdb1 /tmp/key
cryptsetup luksAddKey /dev/sdc1 /tmp/key
cryptsetup luksAddKey /dev/sdd1 /tmp/key
rm /tmp/key

这将使 ubuntu init 脚本能够在根解锁后使用派生密钥来解锁其余块设备,并使它们在 /dev/mapper 下同样可用。我不确定它们是否需要 /etc/crypttab 条目 - 先尝试一下,如果没有出现,则将它们放入不使用密钥的 crypttab 中,这样应该就可以解锁它们了。

(我还没有测试过这些。)

答案3

理论上,您可以在自定义启动脚本中设置临时环境变量,然后解密过程的初始化脚本会引用该变量。几年前我实际上就这么做过。

您的另一个选择是砍掉您硬盘上的现有初始化脚本并编写一个自定义脚本,该脚本只需输入一次密码,然后继续执行两个解密过程。

另外,您可能能够将 LVM 卷扩展到第二个驱动器。如果我没记错的话,加密应该会继续。

答案4

不,没有办法立即实现这一功能。

相关内容