root@host:~# cryptsetup -v open --type luks /dev/sdb4 someAlias
[enter one of your two known keys]
Key slot 2 unlocked.
Command successful.
记住第一个键引用的插槽(在本例中为 2)并撤消该步骤:
root@host:~# cryptsetup close someAlias
用你的第二个已知密钥重复:
root@host:~# cryptsetup -v open --type luks /dev/sdb4 someAlias
[enter the second of your two known keys]
Key slot 0 unlocked.
Command successful.
root@host:~# cryptsetup close someAlias
现在您知道这两个已知键是指插槽 2 和插槽 0。因此插槽 1 必须是包含未知键的那个。删除它:
root@host:~# cryptsetup -v luksKillSlot /dev/sdb4 1
Keyslot 1 is selected for deletion.
Enter any remaining passphrase:
[enter one of the two known keys]
Key slot 0 unlocked.
Command successful.
例子:cryptsetup -v open --test-passphrase --type luks /dev/sdb4
片段来自man cryptsetup
...
--test-passphrase
Do not activate the device, just verify passphrase. This option is only relevant for
open action (the device mapping name is not mandatory if this option is used).
...
根据cryptsetup changelog,此标志可用 since 2012-06-18,或用于 cryptsetup version since 1.5.0-rc2(这意味着,今天几乎每个人都应该可以使用)
神奇的选择是
luksKillSlot
。关键是要找出三个键槽中的哪一个包含要删除的键。如果您还不知道,您可以通过依次尝试所有已知键来检查这一点,然后
cryptsetup
告诉您哪个键指的是哪个插槽。然后未知键引用剩余的插槽。检查使用了哪些插槽(在我的情况下使用了插槽 0、1 和 2)。替换
/dev/sdb4
为您的实际设备:现在使用您的第一个密钥打开(=解密)您的设备并
cryptsetup
设置详细信息,以便显示用于解锁设备的插槽:记住第一个键引用的插槽(在本例中为 2)并撤消该步骤:
用你的第二个已知密钥重复:
现在您知道这两个已知键是指插槽 2 和插槽 0。因此插槽 1 必须是包含未知键的那个。删除它:
一探究竟:
我不能发表评论,但要扩展@PerlDucks 的答案
不必为要测试的每个键打开/锁定分区,您可以使用
cryptsetup open
(或cryptsetup luksOpen
- 旧语法)带有--test-passphrase
标志,someAlias
然后可以省略。例子:
cryptsetup -v open --test-passphrase --type luks /dev/sdb4
片段来自
man cryptsetup
根据cryptsetup changelog,此标志可用 since
2012-06-18
,或用于 cryptsetup version since1.5.0-rc2
(这意味着,今天几乎每个人都应该可以使用)