cryptsetup luksOpen 密钥文件不起作用

Gre*_*ake 3 disk-encryption luks

我在尝试时收到“此密码没有可用的密钥。 ”:

sudo cryptsetup open --type luks /dev/sdc storage --key-file=/path/to/keyfile

/path/to/keyfile文件仅包含纯文本形式的密码。

如果我在交互式询问时输入相同的密码:

sudo cryptsetup open --type luks /dev/sdc storage

然后就可以了。

为什么--key-file在这种情况下不起作用?这是 Ubuntu 14.04 @ Linux 3.13.0-68。

use*_*517 6

我的猜测是您的密钥文件末尾有一个尾随换行符。这将用作密钥的一部分,因此您需要将其删除。

你可以尝试

perl -pi -e 'chomp if eof' /path/to/file
Run Code Online (Sandbox Code Playgroud)

将其删除。例如

带有文本的密钥文件

fred\n
Run Code Online (Sandbox Code Playgroud)

我们可以使用od来查看文件的内容

od -x keyfile
0000000 7266 6465 000a
0000005
Run Code Online (Sandbox Code Playgroud)

然后在 perl 脚本运行之后

od -x keyfile
0000000 7266 6465
0000004
Run Code Online (Sandbox Code Playgroud)