使用 Debian Jessie 上 USB 驱动器上的密钥自动解锁 LUKS 分区

使用 Debian Jessie 上 USB 驱动器上的密钥自动解锁 LUKS 分区

我正在尝试在全新安装的 Debian Jessie(无非 systemd 升级)上使用连接的 USB 驱动器在启动时自动解锁加密的根分区。在按照网上的几个教程操作后,我陷入了困境,因为它在启动后仍然要求输入密码。这是我到目前为止所做的:

在 USB 驱动器上创建密钥:

root@fls:~# dd if=/dev/urandom of=/dev/sdc bs=512 seek=1 count=60

将相应部分作为密钥复制到临时文件中:

root@fls:~# dd if=/dev/sdc bs=512 skip=1 count=4 > tempKeyFile.bin

将该密钥添加到加密分区配置中:

root@fls:~# cryptsetup luksAddKey /dev/md1 --key-file=- tempKeyFile.bin

找到 USB 驱动器的 ID:

root@fls:~# ls -l /dev/disk/by-id/ | grep sdc
lrwxrwxrwx 1 root root  9 usb-0_USB_DRIVE_00000000000165A3-0:0 -> ../../sdc
lrwxrwxrwx 1 root root 10 usb-0_USB_DRIVE_00000000000165A3-0:0-part1 -> ../../sdc1

改成/etc/crypttab这样:

#md1_crypt UUID=e53fc075-0afa-4018-b187-912f8f355699 none luks
md1_crypt UUID=ED04-17F5 /dev/disk/by-id/usb-0_USB_DRIVE_00000000000165A3-0:0 luks,tries=3,keyfile-size=2048,keyfile-offset=512

更新了 systemd 生成器文件:

systemctl --system daemon-reload

我不确定该UUID=条目是否正确,因为它实际上/dev/sdc1显然不会的 UUID /dev/sdc,那么我必须在那里输入什么?

另外,我是否遗漏了其他任何可能阻止 USB 驱动器上的密钥解锁分区的东西?当我cryptsetup luksDump /dev/md1这样做时,它确实显示了两个密钥槽,所以我猜密钥配置正确。

有任何想法吗?

答案1

我认为你几乎是对的。我按照你的说明在这里设置了 LUKS 分区的自动解锁,但没有设置 /。;-)

我觉得不对的是唯一唯一标识符您使用的。您似乎将 UUID 与 USB 上的密钥文件设置混淆了。UUID 指向您要解锁的 LUKS 分区的 uuid。因此,除非我误解了,否则您不想从上面的行更改它。

我会改用/etc/crypttab

md1_crypt UUID=e53fc075-0afa-4018-b187-912f8f355699 /dev/disk/by-id/usb-0_USB_DRIVE_00000000000165A3-0:0 luks,tries=3,keyfile-size=2048,keyfile-offset=512

一个重要的步骤是添加需要的模块initramfs/initcpio以便内核可以读取 USB 密钥。

Ubuntu,我已经改变/etc/initramfs-tools/modulesrtsx_usb{_ms,_sdmmc,}记忆棒因为我使用SD 卡读卡器而是。但对于 USB 密钥,您需要USB存储连接USB(?),隐藏通用(?),隐藏(?),记忆棒也可能是其他的。

然后运行

sudo update-initramfs -u

然后重启。它应该可以工作

答案2

将 USB 安装到某个地方后重新创建密钥,本质上执行了 cat > /dev/null

   # sudo mount /dev/sdc /cryptusb
   # dd if=/dev/urandom of=/cryptusb/keyfile bs=512 seek=1 count=60
   #  dd if=/cryptusb/keyfile bs=512 skip=1 count=4 > tempKeyFile.bin

或者

   # cat  /cryptusb/keyfile > /tmp/keyfile.bin

然后使用'PARTUUID'从 blkid 注入 “/etc/crypttab”

相关内容