无法在 UNIX 中使用密码解密 GPG 文件

无法在 UNIX 中使用密码解密 GPG 文件

我正在尝试在 unix shell 提示符中使用以下命令解密文件:

gpg --passphrase-file /path/to/passphrase/file --output /path/to/output/dir/full_db_restore --decrypt full_db_backup_current.tar.gpg

运行上述命令时出现以下错误:

gpg: 3DES encrypted data
gpg: problem with the agent: No pinentry
gpg: encrypted with 1 passphrase
gpg: decryption failed: No secret key

我已经确认 pinentry 已安装。我不确定 pinentry 是否是问题所在。我感觉可能是“无密钥”错误。如能提供任何帮助,我将不胜感激。

答案1

我找到了解决这个问题的方法。

/usr/bin/gpg --no-tty --batch --passphrase-file /path/to/passphrase/file --output   \
/path/to/output/dir/full_db_restore --decrypt full_db_backup_current.tar.gpg

唯一的区别是我添加了--no-tty--batch选项。登录到我的 unix 服务器后,我将用户从用户 A 切换到用户 B。我假设因为我切换了用户,所以出现了错误。我不确定这是否是正确解决方案,因为上面提到的选项是在从 shell 脚本调用命令时使用的。如能提供任何额外信息,我将不胜感激。提前致谢。

答案2

您必须使用此命令:

    gpg --batch --passphrase-fd 1 --passphrase-file /path/to/passphrase/file  
    --output /path/to/output/dir/full_db_restore full_db_backup_current.tar.gpg

- 批: 用于非交互模式(无需询问)的脚本;

--密码短语 1和...一起--密码文件:从文件中读取密码。

如果您在 *nix 上仅使用 --passphrase-file,它将不起作用。

祝你好运。

答案3

使用以下脚本

#!/bin/sh gpg --pinentry-mode loopback --passphrase='PASSWORD' --output /output/outputFileName /input/inputFileName

相关内容