我正在尝试编写gpg解密脚本,因此需要在命令行中提供密码。根据手册页,有三种方法可以执行此操作:使用从文件中--passphrase-file
读取文件,使用从stdin(或其他文件描述符)中读取文件--passphrase-fd 0
,或使用just在命令行中包含文件--passphrase
。以上所有步骤都需要--batch
进行设置,这就是我所做的。
我最近的命令行尝试是:
echo "<password>" | gpg2 --no-tty --batch --passphrase-fd 0 -d -o /<path_to_destination>/$FILE_NAME $FILE
仍然会弹出一个对话框,要求输入密码。我在这里想念什么?作为参考,如果有所作为,我的密码确实包含一些特殊字符,例如&
,但似乎没有对此抱怨。另外,gpg版本是2.1.9:
# gpg2 --version
gpg (GnuPG) 2.1.9
libgcrypt 1.7.1
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
编辑:与如何强制GPG使用控制台模式pinentry提示输入密码不同?,它只是试图获取用于SSH会话的基于文本的密码条目,而我试图获取一种完全非交互的方法,将GPG用于脚本。
我在这里找到了解决方案:https : //wiki.archlinux.org/index.php/GnuPG#Unattended_passphrase
简而言之,我需要通过在~/.gnupg/gpg-agent.conf
文件中添加以下行来首先在gpg-agent中启用pinentry“回送”模式:
allow-loopback-pinentry
然后将--pinentry-mode loopback
参数添加到我的gpg2
电话中
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句