![LUKS 全盘加密,带 USB 驱动器上的解密密钥](https://linux22.com/image/791586/LUKS%20%E5%85%A8%E7%9B%98%E5%8A%A0%E5%AF%86%EF%BC%8C%E5%B8%A6%20USB%20%E9%A9%B1%E5%8A%A8%E5%99%A8%E4%B8%8A%E7%9A%84%E8%A7%A3%E5%AF%86%E5%AF%86%E9%92%A5.png)
我已安装 alma9 并使用 luks 全盘加密。我想将解密密钥放在 USB 驱动器上,这样无需密码即可启动。
通过查阅各种教程(主要针对 Debian),我得到了以下内容:
#!/bin/bash
luks_key_filename="luks-key"
usb_name="/dev/sdb"
usb_device="/dev/sdb1"
usb_mount_point="/mnt/usb"
luks_key_file="$usb_mount_point/$luks_key_filename"
# Create a single partition on USB drive
echo -e "o\nn\np\n1\n\n\nt\n83\nw" | fdisk $usb_name
echo "y" | mkfs.ext4 $usb_device
mkdir -p $usb_mount_point
mount $usb_device $usb_mount_point
dd if=/dev/urandom of=$luks_key_file bs=512 count=4
usb_uuid=$(blkid -s UUID -o value $usb_device)
luks_uuid=$(lsblk | grep -o "luks-[a-A0-9-]*" | grep -E -o "[a-Z0-9]{8}[a-Z0-9-]*")
luks_device=$(blkid -t UUID="$luks_uuid" | cut -d':' -f1)
cryptsetup luksAddKey $luks_device $usb_mount_point/$luks_key_filename
这看起来相当简单。现在我需要安装 USB 驱动器并让 LUKS 读取我的密钥。我尝试了几种不同的方法。
我正在尝试安装 USB,然后让 crypttab 用以下命令读取它:
cat > /bin/mount-usb.sh <<EOF
#!/bin/bash
mkdir -p $usb_mount_point
mount /dev/disk/by-uuid/$usb_uuid $usb_mount_point
EOF
chmod +x /bin/mount-usb.sh
cat > /etc/dracut.conf.d/mount-usb.sh <<EOF
#!/bin/bash
check() {
return 0
}
depends() {
return 0
}
install() {
inst_hook pre-mount 00 "/bin/mount-usb.sh"
}
EOF
dracut -f
echo "luks-$luks_uuid UUID=$luks_uuid $usb_mount_point/$luks_key_filename luks,discard" > /etc/crypttab
dracut -f
/var/log/messages
显示$luks_key_filename
未找到,因此它似乎正在寻找它,但/mnt/usb
在我启动时并未安装。
我这样做对吗?有人解决了这个问题吗?似乎有一个解决方案无法查看:access.redhat.com/solutions/256833