GnuPG 2.2 拒绝密钥导入:“发送给代理时出错:操作已取消”

kqr*_*kqr 6 import gnupg gpg-agent

我正在尝试通过连接到具有密钥的计算机并运行来将我的 PGP 身份(包括密钥)导入到新计算机

ssh othercomputer cat myself.gpg | gpg2 --import
Run Code Online (Sandbox Code Playgroud)

执行此操作时,看起来 GPG 正在导入公钥,而不是私钥。当仔细检查输出时,我可以看到它显示“错误发送到代理:操作已取消”,我认为这与问题有关。

我有

  • 尝试指定一个pinentry-programin gpg-agent.conf;
  • 重新启动gpg-agent并三次检查它是否正在运行;和
  • 验证 gpg-agent 和 gpg 的版本是否匹配。

kqr*_*kqr 2

问题 \xe2\x80\x93 我认为 \xe2\x80\x93 是 GnuPG 检测到它正在管道中运行,即在非交互式 shell中运行。由于非交互式意味着没有用户与之交互,因此至少在大多数情况下显示 pinentry 对话框 \xe2\x80\x93 没有什么意义。

\n\n

最简单的解决方案是将其存储myself.gpg在本地驱动器上,然后在单独的命令中导入。我了解此解决方案可能会在隐私和保密方面产生一些影响,因此在盲目听从建议之前,请务必了解此选择的后果。

\n

  • @kqr 确实如此,解决方案是使用基于文本的 pinentry,例如“pinentry-curses”。您可能已经安装了它,但另一个 pinentry 程序是默认的。在 Debian 上,您可以“sudo update-alternatives --config pinentry”将 ncurses 版本设置为默认版本。这通常是来自 `/usr/bin/pinentry` -> `/etc/alternatives/pinentry` -> `/usr/bin/pinentry-curses` 的符号链接。 (2认同)