我试图签署我的git提交,但当我将它们推送到GitHub时,他们有Unverified
徽章和
其key-id在签名中的密钥未签署此提交。有人可能试图欺骗你。 GPG密钥ID:mykeyid
我发现这非常神秘,在我的世界中,签名提交的id将出现在签名中,因为具有该id的密钥签署了提交!
问题这怎么可能,我该如何解决?
我特别希望能够在我的IDE中自动签署提交,而无需每次都输入我的密码。
如果有兴趣,这里是我所做的相关步骤的摘要。最初的几个与GitHub签署提交的指南一致。
--armor --export
提供的GPG密钥添加到GitHub帐户user.signingkey
更新git配置。git config --global commit.gpgsign true
设置要提交的提交。gpg --version
进行了检查,为了以防万一,我更新了GNUPGHOME
。C:\Users\username\gpg-no-tty.sh
并加入echo mypassphrase | gpg --passphrase-fd 0 --batch --no-tty --yes "$@"
。无法找到比明文密码更好的东西。git config --global gpg.program C:\\Users\\username\\gpg-no-tty.sh
将git指向此脚本。考证
git verify-commit HEAD
显示与我的git配置中的signingkey
相同的ID,这与我在设置中显示的GitHub GPG密钥相同。 (它还会输出警告gpg: WARNING: unsafe permissions on homedir
)gpg --list-secret-keys --keyid-format LONG
输出的长ID(16个字符),我在我的gitconfig中尝试了这个但是没有&# 39; t help。正如Daniel H在评论中所说的那样,gpg-agent之类的东西应该记住你的密码,这就是我的尝试:
use-agent
和no-tty
(与我的IDE有关,不要求控制台界面要求输入密码)添加到C:\Users\username\.gnupg\gpg.conf
,在{{1}中更改gpg.program
} .gitconfig
gpg
生存时间:C:/Users/username/.gnupg/gpg-agent.conf
和default-cache-ttl 34560000
max-cache-ttl 34560000
,但还没有找到解决方法。 gpg: gpg-agent is not available in this session
和gpg-agent
都是版本2.2.1,因此不是问题。gpg
需要指向GPG_AGENT_INFO
。我做了这个并重新启动。现在我得到C:\Users\username\.gnupg\S.gpg-agent
。gpg: gpg-agent protocol version 0 is not supported
添加到该路径,现在我获得了:1
。这对我没有任何意义。什么是C,它来自哪里?是我的驱动器号,所以gpg尝试将路径作为对象执行吗?答案 0 :(得分:0)
创建密钥时,可以只在密钥上不加密码,也可以尝试使用gpg-agent。对我来说,它不起作用,我仍然必须提供密码,但是值得一试:
将git更新到至少2.19.1,因为它现在包含gpg2,请确保您使用git的gpg,然后尝试再次使用gpg-agent-它现在应该可以工作。仅'gpg-agent'步骤的第2步就足够了。
如果遇到迁移问题,您可能需要删除~\.gnupg
目录(包括密钥)(请注意,错误消息可能会引起误解),因此您可以使用git的gpg重新生成所有内容(包括密钥)。
我已经在{{3}}中写了完整的说明。