【问题标题】:gpg: decryption failed: No secret keygpg:解密失败:没有密钥
【发布时间】:2017-09-16 18:01:15
【问题描述】:

没有密钥我无法解密我的文件。我知道this 之前有人问过这个问题,这个问题的解决方案对我没有帮助。

这是我的问题的场景。 我在使用 --decrypt 命令时在命令提示符下收到此错误。

gpg:解密失败:没有密钥

我有公钥和密码。 我使用以下命令检查是否有密钥。

• gpg --list-secret-keys

• gpg --list-keys

以上两个命令都返回空白结果(没有错误)。所以我决定用 --import 导入公钥。

• gpg --import "C:\PATH\TO_MY_PUBLIC_KEY"

在 --import 命令之后,我可以看到 public 被导入。我找不到处理密钥的方法。有什么方法可以找到密钥或创建新的密钥。

【问题讨论】:

标签: encryption ssis gnupg


【解决方案1】:

我还收到了来自相同 2 个命令的空白输出:

gpg --list-secret-keys
gpg --list-keys

我有理由怀疑这与最近对 ~/.gnupg/pubring.kbx 文件的更改有关,这导致我运行以下 2 个命令来重新导入丢失的密钥:

重新导入丢失的密钥:

gpg --import < ~/.gnupg/secring.gpg

重新导入丢失的公钥:

gpg --import < ~/.gnupg/pubring.gpg

【讨论】:

  • 在将 Ubuntu 从 16.04 升级到 18.04 之后,我现在丢失了我的密钥。使用这种方法重新导入对我有用。
  • ` ~/.gnupg/secring.gpg` 为空
  • 我没有 secring.gpg 或 pubring.gpg 这样的东西。是版本问题吗?
【解决方案2】:

如果您的 pinentry 程序无法正常运行,也会出现此消息,因此 gpg 无法获取密码来解锁解密密钥。这在我身上发生过几次。如果是这种情况,gpg -d -v 将出现选择正确的键,然后在放弃之前挂起一段时间。这就是它在等待从未真正返回的 pinentry。

这些步骤取决于您的特定环境,但检查(或创建)~/.gnupg/gpg-agent.conf 中的pinentry-program 选项是一个不错的起点。就我而言(在 OS X 上,安装了 Homebrew 的 gpgpinentry-mac)我必须使用以下内容创建该文件:

pinentry-program /usr/local/bin/pinentry-mac

您可能需要根据您喜欢的 pinentry 程序的需要进行调整。

【讨论】:

  • 这里的 macOS Big Sur 用户,也使用 Homebrew。我对以上所有内容完全一无所知。我想我可能已经通过 Homebrew 升级了 gpg 并且完全忘记了检查 gpg-agent 配置是否需要任何更改......无论如何,我都不知道在哪里以及要更改什么。谢谢!
【解决方案3】:

非常短的版本:没有密钥就无法解密。

GnuPG 要求提供密钥(如果您在某处读到它,通常用作私钥的同义词),因此使用公钥/私钥密码术对消息进行了加密。您不能使用公钥解密消息,这是公钥/私钥加密背后的基本原理。密钥可以用密码保护,这就是为什么你可能有密码(尽管你错过了密钥)。

如果您需要解密消息,请索取私钥,或要求发件人使用对称加密技术进行加密并与您共享密码。

【讨论】:

    【解决方案4】:

    我有同样的错误,但有不同的解决方案,这是在 OSX 上,但我认为它在其他人上会相似。

    gpg-agent 似乎是罪魁祸首,因为我意识到我从来没有收到pinentry 问题,因为我的其中一个键。 用gpgconf --kill gpg-agent 杀死它解决了这个问题。第一次调用需要它时,gpg-agent 将自动启动。确实,pinentry 出现了,一切又好了。

    【讨论】:

      【解决方案5】:

      在我的情况下,我的 gpg 密钥有密码,当我在宽度和高度有限的 vscode 终端中输入 git-crypt unlock 时,它会输出

      gpg: decryption failed: No secret key
      git-crypt: GPG error: Failed to decrypt
      

      但是当我在完整的终端窗口上尝试相同的命令时,它的作用就像魅力和提示获取密码等等。

      【讨论】:

      • 从远程/ssh tmux 屏幕运行gpg --decrypt... 命令时遇到了同样的问题
      【解决方案6】:

      如果您导入并信任(最终)并且可以使用gpg --list-secret-keys 查看密钥,但是当您解密时它告诉您找不到密钥,请将--batch 添加到您的解密命令中.

      【讨论】:

        【解决方案7】:

        就我而言,gpg (1.x) 和 gpg2 都安装在系统上,而 gpg 1.x 不支持我的 ed25519 密钥。

        看版本就知道支持哪些算法了,grep for Pubkey

        /usr/bin/gpg --version 
        /usr/bin/gpg2 --version
        

        如果是这样,试试gpg2 --list-secret-keys

        如果可行,请为 .bashrc 添加一个别名并将符号链接到 ~/bin(对于 git)

        echo "alias gpg='gpg2'" >> ~/.bashrc
        ln -s /usr/bin/gpg2 $HOME/bin/gpg
        . ~/.bashrc
        

        然后,gpg --list-secret-keys 输出不再为空。

        也许它不能解决 OP 的问题,但希望这对某人有所帮助。

        【讨论】:

          【解决方案8】:

          您可以使用以下命令忽略错误:export GPG_TTY=$(tty)

          【讨论】:

            猜你喜欢
            • 2015-04-03
            • 2018-11-06
            • 2022-06-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-02-23
            • 1970-01-01
            • 2016-06-16
            相关资源
            最近更新 更多