我的电脑死机了很长时间,我按下了重置按钮。重启后,所有五个 luks 加密(LUKS 1)文件系统将无法打开。我收到的消息是“此密码短语无法使用密钥”。我确定我使用的是正确的密码。多年来,我一直对所有文件系统使用相同的密码。除了一个卷之外,我备份了所有这些卷,所以我想分析一下我的选项。我在所有文件系统上尝试了“cryptsetup isLuks”和“cryptsetup luksDump”,它们都成功了,我的意思是,它们是 Luks 分区,我可以转储它们的标头并查看它们的插槽。然而,经过研究,我发现了类似的情况,人们说他们的标头已经损坏到无法修复。我不知道如何识别。我该怎么做?感谢您提供的任何信息。
答案1
我找到了这个页面:
https://bbs.archlinux.org/viewtopic.php?pid=1846810#p1846810
还有这个页面:
进一步来说,
“您可以很快判断是否有任何恢复的机会。运行“hexedit -s /dev/sdx”并在扇区的开头搜索十六进制字符串“4C 55 4B 53 BA BE”。 (这是 ASCII 字符串“LUKS”,后跟十六进制字节 0xBA 和 0xBE。)如果您在磁盘的前几兆字节中找不到它,则 LUKS 标头已消失。”
所有五个拒绝打开的文件系统的头部都有完整的字符串,所以它们似乎都没有损坏。现在,为什么它们都无法打开是一个单独的问题,我怀疑我永远也找不到发生了什么。
答案2
为后人提供答案。
如何知道你的 LUKS 标头是否已损坏?
对你的问题的简短回答是,当你尝试解锁时,它会告诉你它已损坏,或者如果它是启动分区,则在尝试输入密码时系统会冻结。但是,在你的情况下,它只会给你一个错误,提示密钥“无法通过此密码获得”,这有点奇怪。
既然你已经发现了,hexedit -s <device>
你可能还想dmsetup info <device_name>]
在输入密码后尝试运行,看看报告了什么样的状态,表格被报告为存在,等等。参见DMsetup 手册页了解更多信息。
或者尝试dmsetup table --showkeys <device or header file>
看看它是否能识别键槽。
检查 LUKS 标头的其他方法
除了使用 cryptsetup luksHeaderBackup <device> --header-backup-file <file>
创建标题备份(即使它不会打开,因为luksDump
不会报告任何损坏)之外,您还可以尝试备份它们,然后尝试从这些备份中恢复它们,看看是否cryptsetup
可以让您以这种方式恢复标题。除了上述方法之外,您还可以使用dd
以下替代方法来创建标题的“备份”:
root@system:# dd if=<device> of=<Luksheader_filename> bs=512 count=4097
除了使用hexedit
验证标题之外,您还可以对上面刚刚创建的文件使用file
或命令,甚至通过将设备名称替换为路径和文件名来对文件本身运行命令。strings
luksDump
root@system:# file <Luksheader_filename>
root@system:# strings <Luksheader_filename> | grep -i luks LUKS
root@system:# cryptsetup luksDump <Luksheader_filename>
类似案件可能如此相似,也可能不那么相似
至于其他链接和您的研究,即您上面链接的链接,并没有明确说明您的计算机冻结时您在做什么,因此这是您最后一次能够访问驱动器。相比之下,两个链接涉及导致其各自的 LUKS 加密驱动器无法访问的两个不同原因,一个与羟脯氨酸配置错误,另一个是在内核升级之后,这只影响了/home
卷,而不是/root
卷,实际上可能是由于修剪/丢弃问题。
也许根据广泛的解释可以发现更类似的问题这里,他们甚至开始考虑宇宙射线迫使某个地方的位切换的可能性,对于想要仔细检查自己是否已经探索过所有其他选项的人来说,这可能是一篇不错的读物。
由于根据提供的信息尚不清楚,这些“文件系统”*(如您所述)是否保存着您的操作系统或我们广义上的“内容”,如果其中一个 LUKS 加密卷/分区是您的启动驱动器并且密码不起作用,或者如果您只是尝试从终端和/或 GUI(以及在哪种 Linux 版本上)访问这 5 个设备,它会重复出现错误,那么了解您的系统在尝试启动时是否会冻结会有所帮助吗?在这种情况下,后者可能会有一些希望。
*需要澄清的是,“文件系统”是指数据存储的方式和位置,因此文件系统通常是指 ext3、ext4、NTFS 等格式,而 LUKS 是一种磁盘加密规范。因此,它无法让我们了解这 5 个 LUKS“文件系统”(可能是您提到的卷)作为系统的一部分发挥什么作用。
非标头可能存在的问题
问题是如何识别和/或确定损坏的 LUKS 标头。然而,如果没有任何标头的备份,就没有未损坏的标头版本供 OP 比较。由于现在可能更清楚适用的情况不确定并且可能与链接的示例不同,因此可能值得尝试:
使用以下方法检查是否是 LVM 问题
root@system:# lvscan
# or
root@system:# lvdisplay
# To check if you can still identify the LUKS filesystems as volume groups or
# supported LVM block devices.
root@system:# vgdisplay --short
# To find the Volume Group (usually fails if password won't work)
root@system:# lvs -o lv_name,lv_size -S vg_name=[name_of_volumegroup]
# To list the logical volumes identified in the volume group (if it works)
并探索其他可能性
不幸的是,由于多种原因,LUKS1 加密没有实现校验和,您可以从中吸取教训本次演讲如果需要的话。否则,这只是说 LUKS 中唯一的“校验和”会告诉您没有匹配的密钥槽,并暗示它已损坏。
但是,有人指出,您曾说过所有 5 个文件系统都不会打开,并将它们全部称为卷,因此不清楚它们是否都在一个磁盘上,以及它是否是 SSD 驱动器,在这种情况下,内存和存储扫描下一个建议是驱动器。
最后,可以确定的是,您答应了,cryptsetup
是sudo
吗?
你可能还想尝试
- 使用 gparted 的 GUI 中的恢复功能找到有关分区表和其他内容
- 使用以下方式扫描
ddrescue
- 确保大写锁定或数字锁定未打开(我知道这很愚蠢,但只是温馨提醒)
- 尝试一些建议的答案这里
- 如果计算机死机前有更新,请尝试回滚到以前的版本
- 尝试在另一个键槽中添加密码
边注
由于没有提到特定的系统或 GUI,也没有提到启动过程,因此假设您尝试在终端内使用 sudo 打开 LUKS 加密卷。