我正在尝试将我的 PGP 身份(包括密钥)导入到新计算机,方法是连接到具有密钥的计算机,然后运行
ssh othercomputer cat myself.gpg | gpg2 --import
执行此操作时,GPG 似乎正在导入公钥,但未导入私钥。仔细检查输出时,我看到它显示“发送至代理时出错:操作已取消”,我认为这与问题有关。
我有
pinentry-program
尝试在中指定gpg-agent.conf
;- 重新启动
gpg-agent
并再三检查它是否正在运行;并且 - 验证 gpg-agent 和 gpg 的版本是否匹配。
答案1
我认为,问题在于 GnuPG 检测到它在管道中运行,即在非交互式 shell由于非交互式意味着没有用户与其交互,因此显示 pinentry 对话框没有什么意义 — — 至少在大多数情况下。
最简单的解决方案是将其存储myself.gpg
在本地驱动器上,然后使用单独的命令将其导入。我理解这种解决方案可能会对隐私和保密产生一些影响,因此在盲目听从建议之前,请先了解这种选择的后果。
答案2
pinentry-mode
在命令行或 ~/.gnupg/gpg.conf 文件中设置。
--pinentry-mode loopback
要不就
pinentry-mode loopback
在配置文件中。
答案3
添加pinentry-mode loopback
文件~/.gnupg/gpg.conf
适用于 Ubuntu 20.04