我刚刚设置了一个 Debian 系统来尝试几个项目并提高我对 Linux 的理解,但在安装后我就遇到了 cryptsetup 问题。我使用 Debian 9 的图形安装程序,并使用其内置的加密工具来加密 /home 和我设置为逻辑卷的交换空间。
在设置分区后我愚蠢地打开大写锁定键后,我试图更改每个驱动器的加密密码。
我希望能够简单地使用 cryptsetup luksChangeKey 来完成此操作。但是,每当我尝试使用 cryptsetup(以 root 身份运行)访问设备/容器时,我似乎都会收到错误:
<device> is not a valid LUKS device.
请在下面找到 lsblk、ls /dev/mapper 和 cryptsetup 的输出,我希望这些输出能够很好地说明我的设置方式以及我遇到的问题:
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 111.8G 0 disk
├─sda1 8:1 0 953M 0 part /boot/efi
├─sda2 8:2 0 477M 0 part /boot
└─sda3 8:3 0 110.4G 0 part
├─SSD1_LVM-LV_ROOT 254:0 0 7.5G 0 lvm /
├─SSD1_LVM-LV_VAR 254:1 0 14.9G 0 lvm /var
├─SSD1_LVM-LV_TMP 254:2 0 7.5G 0 lvm /tmp
├─SSD1_LVM-LV_USR 254:3 0 29.8G 0 lvm /usr
├─SSD1_LVM-LV_HOME 254:4 0 7.5G 0 lvm
│ └─SSD1_LVM-LV_HOME_crypt 254:8 0 7.5G 0 crypt /home
├─SSD1_LVM-LV_OPT 254:5 0 14.9G 0 lvm /opt
└─SSD1_LVM-LV_SWAP 254:6 0 15.9G 0 lvm
└─SSD1_LVM-LV_SWAP_crypt 254:7 0 15.9G 0 crypt
ls -l /dev/mapper
total 0
crw------- 1 root root 10, 236 Sep 27 09:35 control
lrwxrwxrwx 1 root root 7 Sep 27 09:36 SSD1_LVM-LV_HOME -> ../dm-4
lrwxrwxrwx 1 root root 7 Sep 27 09:36 SSD1_LVM-LV_HOME_crypt -> ../dm-8
lrwxrwxrwx 1 root root 7 Sep 27 09:35 SSD1_LVM-LV_OPT -> ../dm-5
lrwxrwxrwx 1 root root 7 Sep 27 09:35 SSD1_LVM-LV_ROOT -> ../dm-0
lrwxrwxrwx 1 root root 7 Sep 27 09:35 SSD1_LVM-LV_SWAP -> ../dm-6
lrwxrwxrwx 1 root root 7 Sep 27 15:50 SSD1_LVM-LV_SWAP_crypt -> ../dm-7
lrwxrwxrwx 1 root root 7 Sep 27 09:35 SSD1_LVM-LV_TMP -> ../dm-2
lrwxrwxrwx 1 root root 7 Sep 27 09:35 SSD1_LVM-LV_USR -> ../dm-3
lrwxrwxrwx 1 root root 7 Sep 27 09:35 SSD1_LVM-LV_VAR -> ../dm-1
cryptsetup status /dev/dm-7
/dev/dm-7 is active.
type: LUKS1
cipher: aes-xts-plain64
keysize: 512 bits
device: /dev/mapper/SSD1_LVM-LV_SWAP
offset: 4096 sectors
size: 33198080 sectors
mode: read/write
cryptsetup luksAddKey /dev/dm-7
Device /dev/dm-7 is not a valid LUKS device.
我使用 swapoff 禁用了磁盘交换空间,以防引起问题,遗憾的是这没有帮助。
答案1
您必须cryptsetup
在保存 LUKS 标头的设备上运行(用于修改标头的操作,即格式、密钥管理、转储等)。
在你的情况下,这是/dev/mapper/SSD1_LVM-LV_SWAP
/dev/mapper/SSD1_LVM-LV_SWAP_crypt
但是您尝试在交换 LV(加密)上运行它,并且可能保存交换标头(mkswap)而不是 LUKS 标头(这将是 luks 内的 luks...)。