如何使用 GnuPG 和 --passphrase?

如何使用 GnuPG 和 --passphrase?

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

通常,当我使用时gpg,我通常只需运行gpg -c file,它就会要求我输入密码。但由于我希望此脚本能够自行完成所有操作,因此我希望将密码作为命令的一部分提供。

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

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

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

我该如何正确设置参数?

答案1

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

至于无论如何都会弹出的 pin 输入窗口(尽管您使用的是--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-*选项之一来从文件或管道读取。

答案2

--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是一个错误。

答案3

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

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

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

请注意,选项的顺序并不重要;但是任何文件都需要作为最后一个参数。

答案4

你可以像这样使用它:

gpg --passphrase hello -c --no-symkey-cache --cipher-algo AES256 --batch basic.c

此外,批处理的使用不是一个错误,它是在文档中写的这里

来自文档的截图

相关内容