在Ubuntu 11.10上,是否可以通过在启动时仅输入一个密码来解密用LUKS / LVM加密的2个硬盘?


8

这是我的配置:-2个硬盘驱动器,-第一个使用LUKS和LVM加密。我想在加密的卷组中添加第二个硬盘驱动器。我已经成功安装并加密了它。但是,当我启动时,我必须输入2个密码来解密两个硬盘。

没有办法只使用一个吗?



Answers:


4

我终于找到了一种技巧,只需输入一个密码,并对我的所有物理磁盘进行加密。

我用口令加密第一个,使用存储在第一个硬盘驱动器上的密钥文件(/ root / mykeyfile)对第二个加密。

并使用/ etc / crypttab文件中的正确行,就可以了。

更新/ etc / crypttab

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

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


dd if = / dev / urandom of = / root / mykeyfile bs = 1024 count = 20 这是一个如何创建随机字符串以用作“密钥文件”的示例。
EarthmeL12年

1
这样做的问题是,涉及访问文件系统的妥协(例如,权限问题或较小的问题)将导致关键的妥协,这是一个更大的问题。我强烈反对这种做法。请参阅我的答案,以获得更好的(自动)方法。
潜行

您能解释一下这应该如何工作吗?LVM是否以降级模式启动,然后在第二个PV可用后自行修复?
aij 2015年

0

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

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

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初始化脚本将能够使用派生密钥来解锁其余的块设备,并使其类似地在/ dev / mapper下可用。我不确定它们是否需要/ etc / crypttab条目-不先尝试它们,如果它们不出现,则将它们放入没有密钥的crypttab中,它应该将它们解锁。

(我还没有测试过任何一个。)


我在Debian上没有使用crypttab时尝试过,但是没有用。即使使用crypttab,它也不起作用,但是我已经接近了。sdb3_crypt UUID = 4a ... sda3_crypt luks,initramfs,keyscript = decrypt_derived。需要initramfs选项才能获得initramfs中包含的crypto_derived脚本。但是它仍然无法在启动时加载。
aij 2015年

-1

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

您的另一种选择是删除硬盘驱动器的现有初始化脚本,并编写一个自定义脚本,该脚本输入一次密码,然后继续进行两个解密过程。

或者,您可以将LVM卷扩展到第二个驱动器。如果我没记错的话,加密应该继续下去。


1
LVM构建在基础加密卷之上。在不创建另一个加密卷的情况下扩展LVM不会加密添加到该卷组的其他存储。
2014年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.