【问题标题】:Suppress the passphrase prompt in GPG command禁止 GPG 命令中的密码提示
【发布时间】:2018-08-10 20:41:03
【问题描述】:

编辑版本

我有一个关于 GPG 的问题,但我写了所有的过程,也许它会对某人有所帮助。

我想:禁止 GPG 命令中的密码提示。我不想:使用 -c 选项(--symmetric)。

我有 2 个系统 Linux 和 Windows。我想将数据从 Linux 发送到 Windows。我想在 Linux 中加密数据并在 Windows 中解密。

  • myFileOnLinux.txt 是 Linux 上我要加密的文件。
  • my@Email.compair key 的 UID。
  • myPasswordPhrase 是密码短语。

我在两者上都安装了 GPG 并执行了以下步骤:

  1. Windows中生成一对key:

    gpg --gen-key
    
  2. 更改Windows中的关键参数:

    gpg --edit-key my@Email.com
    
    trust
    5
    expire
    0
    
  3. 导出公钥:

    gpg -a --export my@Email.com > public.key
    
  4. 将公钥发送到 Linux 机器。

  5. 在 Linux 中导入公钥。

    gpg --import public.key
    
  6. 在 Linux 中更改信任参数

    gpg --edit-key my@Email.com
    
    trust
    5
    
  7. 在 Linux 中加密文件

    gpg --output output.enc --encrypt --recipient my@Email.com myFileOnLinux.txt
    
  8. 将加密文件发送到 Windows。

  9. 解密文件。

    gpg --batch --passphrase "myPasswordPhrase" -d -o test.dec output.enc
    

在带有弹出窗口的 Windows 中,它再次询问我 Passphrase。如何避免?

【问题讨论】:

  • 试试--passphrase-file 选项。
  • 同样的问题:(
  • @i486 谢谢,但正如我提到的,我不想使用 -c 作为选项。
  • @MalusJan 你能解决这个问题吗?我在 Windows 的 gnupg2.x 上遇到了类似的问题。

标签: prompt gnupg passphrase


【解决方案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 标志会在导入密钥以及解密文件时抑制密码提示。

【讨论】: