我正在尝试在全新安装的 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/modules
了rtsx_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”