LUKS 全盘加密,带 USB 驱动器上的解密密钥

LUKS 全盘加密,带 USB 驱动器上的解密密钥

我已安装 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

相关内容