如何将GnuPG与--passphrase一起使用?


11

我想编写一个脚本,它将gpg使用密码短语“ test” 运行一个名为“ file”的文件。

通常,当我使用时gpg,我通常只是奔跑gpg -c file而它要求我输入密码。但是由于我希望此脚本自己完成所有操作,因此我想在命令中提供密码短语。

现在,当我尝试使用:时gpg -c file --passphrase test,它输出:

用法:gpg [选项] --symmetric [文件名]

想要我使用哪种接缝gpg --passphrase test --symmetric file。但是,如果这样做,它会弹出一个对话框,要求我输入要使用的密码。这不是我想要的。

如何正确设置参数?

Answers:


7

在GnuPG中,选项必须位于命令之前,因此--passphrase选项必须位于之前--symmetric

关于无论如何都会弹出的引脚输入窗口(尽管您使用--passphrase),您可能已经在使用GnuPG 2,它需要--batch与一起使用--passphrase。从手册页:

--passphrase string
    Use string as the passphrase. This can only be used if only one
    passphrase is supplied. Obviously, this is of very questionable
    security on a multi-user system. Don't  use this option if you
    can avoid it.  Note that this passphrase is only used if the
    option --batch has also been given.  This is different from
    GnuPG version 1.x.

请注意,在多用户系统上,所有其他用户都将能够读取您的命令行,从而在执行GnuPG时也可以读取密码。最好使用其他--passphrase-*选项之一代替从文件或管道读取。


你的意思是,我的顺序--passphrase--symmetric论点实际上是正确的,但我唯一缺少的--batch说法?因为那对我不起作用。我试图添加--batch之前和之后,以防万一。另外,我也不怎么检查我使用的是GPG 2,但是您粘贴的那一部分说的Note that this passphrase is only used if the option --batch has also been given.在我的man页面中不存在。

您正在使用什么操作系统/发行版?gpg --version应该提供有关您使用的GnuPG版本的信息。你有gpg2二进制文件吗?
Jens Erat 2015年

我正在使用Xubuntu 14.04。,版本gpg是1.4.16。受到您的评论的启发,我发现gpg2是单独开发的,因此我安装了它并进行了尝试,但是它抱怨no valid OpenPGP data found. processing message failed: Unknown system error

Jens真是太棒了,可以回答很多带有出色答案的问题,但有一点是错误的:“选项必须位于命令之前,因此--passphrase选项必须位于--symmetric之前。” 完全不对。
rsaw 2015年

@rsaw:您的观点是正确的-对于--symmetric--passphrase,顺序似乎无关紧要,但是请尝试在之后进行--export定义--armor。通常,选项必须在命令之前,这也是手册页中定义的顺序。
延斯·埃拉特

2

如果gpg --version报告v2,则需要添加该--batch选项。

根据语法输出,您可能正在使用v1,在这种情况下,您需要:

gpg --passphrase PASS -c --no-use-agent FILE

注意,选项的顺序并不重要。但是,任何文件都必须是最后一个参数。


1

使用--pinentry-mode loopback--passphrase&结合使用--passphrase-[file/fd],并且可以在文件名冲突的情况下输入新信息,例如:

File 'xyz.gpg' exists. Overwrite? (y/N)n
Enter new filename: xyz2.gpg

不像--batch那样会很快失败,说...failed: File exists


如果您最初最初添加了详细选项(-v),则应该看到类似以下内容:

$ gpg -v -c file --pinentry-mode loopback --passphrase-file=passfile
gpg: Note: '--pinentry-mode' is not considered an option
gpg: Note: '--passphrase-file=passfile' is not considered an option
usage: gpg [options] --symmetric [filename]

清楚地表明它不喜欢将-c--symmetric)放在首位。


我认为gpg2忽略--passphrase选项的行为,除非伴随--batch有bug。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.