我在 CentOS 5 上使用 cryptsetup luks 加密对一堆硬盘进行了加密。一切都很好,直到我将系统升级到 CentOS 6。现在我无法再挂载磁盘了。
使用我的关键词进行安装:
sudo cryptsetup luksOpen /dev/sdc1 d2
我收到此错误:
device-mapper: reload ioctl on failed: Invalid argument
Failed to setup dm-crypt key mapping for device /dev/sdc1.
Check that kernel supports aes-xts-plain64 cipher (check syslog for more info).
Failed to read from key storage.
在 /var/log/messages 中:
Feb 3 23:43:23 data kernel: device-mapper: table: 253:0: crypt: Device lookup failed
Feb 3 23:43:23 data kernel: device-mapper: ioctl: error adding target to table
关于如何安装,我有什么想法吗?
答案1
找到解决方案。
问题是驱动器使用大约 512 个字符长的交互式密钥加密(从密钥文件复制/粘贴)。出于某种原因,CentOS 6 中的新内核模块无法正确读取由旧版本创建的 512 个字符的加密密钥。似乎只影响不同版本的内核或 cryptsetup,因为在同一系统上创建和打开 512 个字符的密钥时会起作用。
总之...
内核 -> 创建 512 个字符的 luks 密钥 -> 可以在同一个内核中打开
旧内核 -> 创建 512 个字符的 luks 密钥 -> 无法在新内核中打开
512 个字符太长了。不确定阈值是多少,但我决定将密钥更改为 50 个字符,而且成功了。
为了解决这个问题,我重新安装了我以前使用的旧 CentOS 5 操作系统,使用了 cryptsetup luksAddKey,输入了原始的(长)512 个字符的密钥,并创建了一个长度为 50 个字符的新密钥。
然后我重新安装了 CentOS 6,并使用 50 个字符的密钥(不是原始密钥)成功地用 cryptsetup luksOpen 挂载了每个磁盘。
因此,给遇到类似错误的人一个提醒。如果您使用超长密钥加密驱动器,请更改为新内核或 cryptsetup,并在尝试使用 luksOpen 加密卷时收到内核模块错误,则您可能必须返回旧内核版本以使用 luksAddKey 并添加较短的密钥,然后再在新内核中使用。这可能是一个错误,或者是 LUKS 使用的内核模型中允许的最大交互密钥不匹配。