我正在尝试在 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