在禁用 LUKS 加密的愚蠢尝试中,我做了
cryptsetup luksRemoveKey
到我唯一的钥匙。所以现在每次我尝试启动我的 Fedora-21 时,它都会要求输入密码,但显然无法识别它,并说
Reached target System Initialization
Reached target Basic System
就是这样。有没有办法恢复或者我必须重新格式化我的硬盘?
cryptsetup luksAddKey
在这种情况下似乎不起作用。
答案1
正如手册页所述,游戏结束了。
删除最后一个密码会使 LUKS 容器永久无法访问。
也就是说,如果您确实删除了最后一个键。是否cryptsetup luksDump
显示DISABLED
所有键槽?
通常cryptsetup
会阻止您这样做,或者至少要求确认:
# cryptsetup luksRemoveKey foobar
Enter passphrase to be deleted:
WARNING!
========
This is the last keyslot. Device will become unusable after purging this key.
Are you sure? (Type uppercase yes): NO, ABSOLUTELY NOT OKAY!
除非处于批处理模式或从管道读取密码,否则它会执行此操作。
我个人认为即使那样它也应该阻止你,毕竟如果你真的想让它无法访问你也可以luksErase
直接使用。但事情似乎并非如此。
如果您有 LUKS 标头的备份,或者 LUKS 容器仍处于打开状态,则情况会有所不同。您可以恢复或使用 LUKS 标头的备份luksOpen --header thebackup.header
。
对于开放的 LUKS 容器,您可以获取主密钥并dmsetup table --showkeys
从中构建新的 LUKS 标头,如下所示这个答案(它以不同的方式获取主密钥,但概念相同)。
答案2
删除最后一个密码会使 LUKS 容器永久无法访问。
这是 LUKS 设计的固有属性。每个密钥槽都包含实际的加密密钥,并由从密码短语派生的密钥封装。如果没有留下包含包装密钥的插槽,则不再有该密钥的副本。
恐怕您必须从备份中恢复数据。