密钥ID在签名中的密钥未签署此提交

时间:2017-11-15 12:15:11

标签: git github gnupg

我试图签署我的git提交,但当我将它们推送到GitHub时,他们有Unverified徽章和

  

其key-id在签名中的密钥未签署此提交。有人可能试图欺骗你。 GPG密钥ID:mykeyid

我发现这非常神秘,在我的世界中,签名提交的id将出现在签名中,因为具有该id的密钥签署了提交!

  

问题这怎么可能,我该如何解决?

我特别希望能够在我的IDE中自动签署提交,而无需每次都输入我的密码。

如果有兴趣,这里是我所做的相关步骤的摘要。最初的几个与GitHub签署提交的指南一致。

  1. 生成密钥对,将--armor --export提供的GPG密钥添加到GitHub帐户
  2. 使用user.signingkey更新git配置。
  3. 默认使用git config --global commit.gpgsign true设置要提交的提交。
  4. git附带的gpg版本太旧了,我安装了gpg 2,使用gpg --version进行了检查,为了以防万一,我更新了GNUPGHOME
  5. 制作一个脚本C:\Users\username\gpg-no-tty.sh并加入echo mypassphrase | gpg --passphrase-fd 0 --batch --no-tty --yes "$@"。无法找到比明文密码更好的东西。
  6. 使用git config --global gpg.program C:\\Users\\username\\gpg-no-tty.sh将git指向此脚本。
  7. 考证

    1. 重要提示:我确认git verify-commit HEAD显示与我的git配置中的signingkey相同的ID,这与我在设置中显示的GitHub GPG密钥相同。 (它还会输出警告gpg: WARNING: unsafe permissions on homedir
    2. 同样重要的是,正如Ferrybig在评论中提到的,我检查了我的gitconfig中的电子邮件与用于我的gpg密钥的电子邮件相同,与用作GitHub中的主要(已验证)电子邮件的电子邮件相同。
    3. 正如Jens Erat在评论中提到的,您也可以使用指纹(40个字符串)而不是gpg --list-secret-keys --keyid-format LONG输出的长ID(16个字符),我在我的gitconfig中尝试了这个但是没有&# 39; t help。
    4. GPG-剂

      正如Daniel H在评论中所说的那样,gpg-agent之类的东西应该记住你的密码,这就是我的尝试:

      1. use-agentno-tty(与我的IDE有关,不要求控制台界面要求输入密码)添加到C:\Users\username\.gnupg\gpg.conf,在{{1}中更改gpg.program } .gitconfig
      2. 添加到gpg生存时间:C:/Users/username/.gnupg/gpg-agent.confdefault-cache-ttl 34560000
      3. 我得到了max-cache-ttl 34560000,但还没有找到解决方法。 gpg: gpg-agent is not available in this sessiongpg-agent都是版本2.2.1,因此不是问题。
      4. 根据一些消息来源,对于gpg版本> 2.1环境变量gpg需要指向GPG_AGENT_INFO。我做了这个并重新启动。现在我得到C:\Users\username\.gnupg\S.gpg-agent
      5. 我已将gpg: gpg-agent protocol version 0 is not supported添加到该路径,现在我获得了:1。这对我没有任何意义。什么是C,它来自哪里?是我的驱动器号,所以gpg尝试将路径作为对象执行吗?

1 个答案:

答案 0 :(得分:0)

创建密钥时,可以只在密钥上不加密码,也可以尝试使用gpg-agent。对我来说,它不起作用,我仍然必须提供密码,但是值得一试:

将git更新到至少2.19.1,因为它现在包含gpg2,请确保您使用git的gpg,然后尝试再次使用gpg-agent-它现在应该可以工作。仅'gpg-agent'步骤的第2步就足够了。

如果遇到迁移问题,您可能需要删除~\.gnupg目录(包括密钥)(请注意,错误消息可能会引起误解),因此您可以使用git的gpg重新生成所有内容(包括密钥)。

我已经在{{3}}中写了完整的说明。