6

目前,我使用 2 封电子邮件(个人 + 公司)和一个 SSH 密钥登录 GitHub。但我使用相同的 GPG 密钥进行签名。两者都在我的 GitHub 电子邮件设置页面上进行了验证。

在第一个(个人)上,没问题,当我提交时,它显示为Verified。在第二个(公司)上,提交在 GitHub 中显示为未验证,并带有以下警告消息:

此签名中的电子邮件与提交者电子邮件不匹配。

$ gpg --list-secret-keys --keyid-format LONG

...
sec   rsa4096/MY_GPG_KEY_ID 2020-05-19 [SC] [expires: 2022-05-19]
...
uid    [ultimate] Furkan (Company key) <second_email@test.com>
uid    [ultimate] Furkan <first_email@test.com>

在存储库中:

$ git log --show-signature

...
gpg: Good signature from "Furkan (Company key) <second_email@test.com>" [ultimate]
gpg:                 aka "Furkan <first_email@test.com>" [ultimate]
Author: MyGitHubNickname <second_email@test.com>
...

本地配置设置:

$ git config --local --list

...
user.name=Furkan
user.email=second_email@test.com

全局配置设置:

$ git config --global --list

...
user.name=MyGitHubNickname
user.email=second_email@test.com
user.signingkey=MY_40_CHARACTER_SIGNING_KEY

但没有奏效:

$ git commit -S --amend --reset-author
$ git push --force

我在这个弹出窗口的底部看到了 MY_GPG_KEY_ID键,完全一样。

图片

如 GitHub Docs 中所述,我按照GPG 密钥指南中的疑难解答提交签名验证使用经过验证的电子邮件地址进行操作,但仍然没有解决问题。

4

2 回答 2

3

到目前为止,您所做的一切都是正确的;您只是错过了最后一步,即更新 GitHub 的公钥副本。

您需要重新生成您的公钥(gpg --armor --export KEY_ID),然后,在您的 GitHub 用户设置>“SSH 和 GPG 密钥”中,您需要删除原始密钥并上传重新生成的公钥。

这就是它最终应该看起来的样子。使用任何列出的地址签名的提交现在将显示为已验证。

具有两个关联电子邮件地址的 GPG 密钥

于 2021-10-14T02:14:55.707 回答
1

就我而言,提交者和作者之间存在差异。GitHub 默认显示作者,但提交者设置为自动生成的内容。

你可以检查git log --format=full

于 2021-06-03T13:11:47.933 回答