有人设法让 cryptsetup 使用存储在内核密钥环中的密码打开 LUKS 卷吗?根据这文章(见底部)应该是可能的。
我在密钥环中为 root 加载了一个具有读取权限的密码:
# keyctl list @u
1 key in keyring:
57767030: --alswrv 0 0 user: nixos_data:passphrase
# keyctl describe 57767030
57767030: alswrvalswrv------------ 0 0 user: nixos_data:passphrase
如果我通过明确输入此密钥的内容来打开加密卷,则该卷将被成功解锁:
# keyctl pipe 57767030 | cryptsetup open /safe.img nixos_data_decrypted --key-file -
从链接的文章中,我了解到要让 cryptsetup 直接从密钥环读取密钥,我应该像这样向 luks 设备添加一个令牌:
# cryptsetup token add --key-description nixos_data:passphrase /safe.img
之后我应该能够打开设备而无需明确指定密码,如下所示:
# cryptsetup open --token-only /safe.img nixos_data_decrypted
但是,使用 运行该程序--debug
会给出以下输出:
# Activating volume nixos_data_decrypted using token -1.
# Validating keyring token json
# keyring_get_passphrase failed (error -126)
# Token 0 (luks2-keyring) open failed with -22.
# Releasing crypt device /safe.img context.
# Releasing device-mapper backend.
# Unlocking memory.
Command failed with code -1 (wrong or missing parameters).
可以找到完整输出这里。
编辑:省略 --token-only 选项不会改变这一点,在这种情况下,cryptsetup 会要求输入现有的密码,因此仍然不使用存储在内核密钥环中的密码。
答案1
这是一个对我有用的解决方案:
realpath /dev/disk/by-uuid/<your_device_or_partition_UUID_here> | xargs -I{} gio mount -d {}
您必须正确配置 fstab 和 crypttab 才能使其正常工作。例如:
在 /etc/fstab 中:
/dev/mapper/mypartition_crypt /media/user/mypartition/ ext4 noauto 0 0
在/etc/crypttab中:
mypartition_crypt UUID=<your_device_or_partition_UUID_here> none luks,noauto
不确定这是否适用于启动时自动挂载,但在用户会话中从 CLI 手动调用时可以工作