禁止 GPG 命令中的密码提示
Posted
技术标签:
【中文标题】禁止 GPG 命令中的密码提示【英文标题】:Suppress the passphrase prompt in GPG command 【发布时间】:2018-08-10 20:41:03 【问题描述】:编辑版本
我有一个关于 GPG 的问题,但我写了所有的过程,也许它会对某人有所帮助。
我想:。我不想:使用 -c 选项(--symmetric)。
我有 2 个系统 Linux 和 Windows。我想将数据从 Linux 发送到 Windows。我想在 Linux 中加密数据并在 Windows 中解密。
myFileOnLinux.txt
是 Linux 上我要加密的文件。
my@Email.com
pair key 的 UID。
myPasswordPhrase
是密码短语。
我在两者上都安装了 GPG 并执行了以下步骤:
在Windows
中生成一对key:
gpg --gen-key
更改Windows
中的关键参数:
gpg --edit-key my@Email.com
trust
5
expire
0
导出公钥:
gpg -a --export my@Email.com > public.key
将公钥发送到 Linux 机器。
在 Linux 中导入公钥。
gpg --import public.key
在 Linux 中更改信任参数
gpg --edit-key my@Email.com
trust
5
在 Linux 中加密文件
gpg --output output.enc --encrypt --recipient my@Email.com myFileOnLinux.txt
将加密文件发送到 Windows。
解密文件。
gpg --batch --passphrase "myPasswordPhrase" -d -o test.dec output.enc
在带有弹出窗口的 Windows 中,它再次询问我 Passphrase
。如何避免?
【问题讨论】:
试试--passphrase-file
选项。
同样的问题:(
找到这个:unix.stackexchange.com/questions/60213/…
@i486 谢谢,但正如我提到的,我不想使用 -c 作为选项。
@MalusJan 你能解决这个问题吗?我在 Windows 的 gnupg2.x 上遇到了类似的问题。
【参考方案1】:
经过大量挖掘,我发现这个命令会禁用 windows 上的输入提示(也适用于 *nix 系统):
--pinentry-mode=loopback
完整的命令是:
gpg --pinentry-mode=loopback --passphrase "PASSWORD" -d -o "PATH\TO\OUTPUT" "PATH\TO\FILE.gpg"
【讨论】:
天哪,我一直在浪费时间试图弄清楚这一点。那里的每个答案要么使用旧版本的 gpg,其中密码/批处理选项过去在 Windows 中工作,要么他们是那些选项仍然有效的 linux 用户。谢谢。 GPG 1.4.7 可以正常使用“--batch”开关来抑制交互式命令。对于 GPG 2.2+,“--batch”开关不起作用,但“--pinentry-mode=loopback”可以在运行命令时抑制密码短语窗口。感谢您的解决方案! 这行得通。但是,我必须保留“--batch”和“--yes”开关。如果目标文件存在,则覆盖弹出窗口将阻止该过程。所以添加这两个开关会自动抑制并回答是覆盖。 @sunpack--pinentry-mode=loopback
在 gpg v2.2.20 上使用和不使用 --batch
和 --yes
对我来说都很好,还与 --passphrase-fd 0
和密码短语中的管道结合使用。 @mayank-jha 单独--batch
和 --yes
对我也不起作用。【参考方案2】:
gpg --batch --import sec.key
gpg -d --batch --passphrase mypassphrase encrypted_file.gpg
--batch 标志会在导入密钥以及解密文件时抑制密码提示。
【讨论】:
以上是关于禁止 GPG 命令中的密码提示的主要内容,如果未能解决你的问题,请参考以下文章