gpg解密失败,没有密钥错误

for*_*rtm 32 unix encryption gnupg public-key-encryption

我有一个gpg .key文件,用作解密.dat.pgp文件的密码.使用以下命令在一台服务器上使用相同的.key文件成功解密加密的.data.pgp文件

cat xxx_gpg.key | /usr/bin/gpg --batch --quiet -o xxx.dat --passphrase-fd O -d xxx.dat.pgp
Run Code Online (Sandbox Code Playgroud)

但是,当我将相同的密钥移动到另一个服务器xxx_gpg.key并运行相同的上述命令时,我得到以下错误 -

gpg: decryption failed: No secret key
Run Code Online (Sandbox Code Playgroud)

编辑:

我发现它gpg --list-secret-keys返回服务器上的一些数据,但是没有为其他服务器返回结果.

我们如何配置密钥

Vic*_*art 34

我刚刚在Arch Linux的gpg CLI上遇到了这个问题.我需要杀死现有的"gpg-agent"进程,然后一切都恢复正常(一个新的gpg-agent自动启动; ......).

  • 在macOS上我也有同样的问题和修复.先前的解密以某种方式出错,以某种方式导致上述错误. (6认同)
  • 这正是我的问题,修复 - 我已经在没有代理的情况下使用 gpg 一段时间了,显然它现在默认启用?也许在 ubuntu 17.04 中,我现在(不小心)正在运行它。:-) 我想它仍然有问题。 (2认同)
  • ...只是为了在macOS上杀死gpg-agent与gpgconf --kill gpg-agent一起使用;无需专门重新启动代理。 (2认同)

Xen*_*050 19

看起来密钥不在另一台机器上,因此即使使用正确的密码(从文件中读取)也不行.

这些选项应该有效

  • 要么将密钥环(可能只需要密钥密钥,但公共密钥是公共密钥)复制到另一台机器上
  • 或者导出密钥然后在另一台机器上导入

以下几个有用的选项man gpg:

--export
从所有密钥环(默认密钥环和通过选项注册的密钥环)导出所有密钥--keyring,或者如果至少给出一个名称,则输出给定名称的密钥.新密钥环将写入STDOUT或带有选项的文件--output.与--armor邮件一起使用.

--export-secret-keys
与之相同--export,但导出密钥.

--import
--fast-import
导入/合并密钥.这会将给定的密钥添加到密钥环.快速版本目前只是一个同义词.

有可能

--keyring file
将文件添加到当前密钥环列表中.如果文件以波浪号和斜杠开头,则这些文件将被$ HOME目录替换.如果文件名不包含斜杠,则假定它位于GnuPG主目录中(如果未使用--homedir或$ GNUPGHOME,则为"〜/ .gnupg").

请注意,这会将密钥环添加到当前列表中.如果意图是单独使用指定的密钥环,请--keyring同时使用--no-default-keyring.

--secret-keyring file
--keyring秘密密钥环相同.

  • 简短版本:#从另一台计算机导入密钥:gpg --export $ {ID}> public.key gpg --export-secret-key $ {ID}> private.key#将这些文件复制到另一台计算机上,然后gpg-从https://unix.stackexchange.com/questions/184947/how-to-import-secret-gpg-key-copied-from-one-machine-to-another导入public.key gpg --import private.key# (2认同)

Jor*_*tek 7

如果终端窗口太小,使用该实用程序时会出现此错误pass

只需将终端窗口高几行即可。

非常混淆。

怀疑论者的解释。使用的pinentry的诅咒版本时,这是一个问题,因为描述在这里:“因为他们的方式绘制诅咒的对话框中,的pinentry-诅咒只能在其大于10行高的终端”

  • 天啊,我从来没想过这会成为一个问题。这完全解决了我的问题 (3认同)

Ric*_*o D 6

您也可能对此处的最佳答案感兴趣: https://askubuntu.com/questions/1080204/gpg-problem-with-the-agent-permission-denied

基本上对我也有用的解决方案是:

gpg --decrypt --pinentry-mode=loopback <file>
Run Code Online (Sandbox Code Playgroud)


Mei*_*bay 6

我试图使用使用passgnugp2 (gpg2) 的aws-vault。我在 Ubuntu 20.04 上运行 WSL2。

我尝试了上述所有解决方案,最终,我不得不再做一件事——

$ rm ~/.gnupg/S.*                    # remove cache
$ gpg-connect-agent reloadagent /bye # restart gpg agent
$ export GPG_TTY=$(tty)              # prompt for password
# ^ This last line should be added to your ~/.bashrc file
Run Code Online (Sandbox Code Playgroud)

这个解决方案的来源来自一些日语博客文章,幸运的是有谷歌翻译:)

  • 也适用于在 WSL2 中运行的 Ubuntu 18.04 (2认同)

jay*_*ren 5

如果您尝试在su安装了 GPG 2.x 的系统上将密码解密给其他用户,有时也会出现此错误。 已经针对 RHEL 6 报告了此错误,但没有可用的修复程序;显然这是由于 GPG 2.x 中的一些设计决定。错误报告中建议的一种解决方法是在 tmux 或 screen 会话中运行解密。 更多阅读在这里