我想在decrypt
没有任何用户交互的情况下使用GnuPG的命令.脚本的--passphrase-fd
论点似乎正是我所需要的.但我不知道它是如何工作的 - 没有找到例子.
在Windows和UNIX环境下,有人能给我一个这样的命令的例子吗?
(仅供参考,我正在使用GnuPG 2).
谢谢你:)
kyl*_*uff 38
要--passphrase-fd
在GnuPG v2中使用gpg选项,必须指定--batch
参数.我将首先解释如何--passphrase-fd
工作,然后进入示例.
--passphrase-fd
告诉GnuPG 期望密码来自哪个文件描述符(-fd).标准文件描述符是STDIN(0),STDOUT(1)和STDERR(2).对于这个问题的上下文,通常只关注STDIN(0).
您没有指定密码短语的来源,因此我将以各种方式演示STDIN(标准输入)的用法.
--passphrase-fd 0
告诉GnuPG从输入中检索密码短语到当前shell; 例如,如果您希望GnuPG在下一行控制台输入中获取密码短语数据,则命令和输出将如下所示:
gpg2 --batch --passphrase-fd 0 --armor --decrypt /path/to/encrypted_file.pgp
<next line of input is passphrase followed by hitting enter>
gpg: encrypted with 1024-bit RSA key, ID EC18C175, created 2013-10-26
"testkey4321 (4321) <test@4321.com>"
this is a test... this is only a test...
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,密码是通过文件描述符0(STDIN)提供的 - 我们通过在shell当前标准输入上输入它来提供.
在下一个例子中,我们将告诉GnuPG从输入中检索密码短语到当前shell,它实际上是另一个命令的输出(echo,在这种情况下,它只是"回声"你告诉它的内容):
echo "mypassphrase" | gpg2 --batch --passphrase-fd 0 --armor --decrypt /path/to/encrypted_file.pgp
gpg: encrypted with 1024-bit RSA key, ID EC18C175, created 2013-10-26
"testkey4321 (4321) <test@4321.com>"
this is a test... this is only a test...
Run Code Online (Sandbox Code Playgroud)
另一个将包含密码的文件内容转储到STDIN的示例 -
cat /path/to/file_with_passphrase | gpg2 --batch --passphrase-fd 0 --armor --decrypt /path/to/encrypted_file.pgp
gpg: encrypted with 1024-bit RSA key, ID EC18C175, created 2013-10-26
"testkey4321 (4321) <test@4321.com>"
this is a test... this is only a test...
Run Code Online (Sandbox Code Playgroud)
总而言之,--passphrase-fd
只是告诉GnuPG你想通过标准文件描述符为它提供必要的密码短语; GnuPG v2和GnuPG之间的区别仅仅是--batch
参数.
上面的例子应该工作一样在Windows和*nix的环境,唯一的区别是,在Windows中-根据您的配置和版本-你将不得不更换cat
与type
以转储文件STDIN的内容.
Jod*_*ger 21
kylehuff的回答仍然不适合我,gpupg仍然弹出密码提示.
根据https://wiki.archlinux.org/index.php/GnuPG#Unattended_passphrase和gnupg 2.1.0及更高版本,您需要执行其他步骤来支持--passphrase-fd
首先,编辑gpg-agent配置以允许环回pinentry模式:〜/ .gnupg/gpg-agent.conf
Run Code Online (Sandbox Code Playgroud)allow-loopback-pinentry
如果正在运行,请重新启动gpg-agent进程以使更改生效.
其次,要么需要更新应用程序以包含命令行参数以使用环回模式,如下所示:
Run Code Online (Sandbox Code Playgroud)$ gpg --pinentry-mode loopback ...
小智 5
使用GPG4win / gpg 2.2.3:要使用passphrase-fd 0
和跳过提示,我可以确认以下各项有效:
--pinentry-mode loopback
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
31600 次 |
最近记录: |