无法在 GitHub 上将我的第二封邮件提交为“已验证”

Den*_*rax 22 git github gnupg gpg-signature

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

\n

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

\n
\n

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

\n
\n
$ gpg --list-secret-keys --keyid-format LONG\n\n...\nsec   rsa4096/MY_GPG_KEY_ID 2020-05-19 [SC] [expires: 2022-05-19]\n...\nuid    [ultimate] Furkan (Company key) <second_email@test.com>\nuid    [ultimate] Furkan <first_email@test.com>\n
Run Code Online (Sandbox Code Playgroud)\n

在存储库中:

\n
$ git log --show-signature\n\n...\ngpg: Good signature from "Furkan (Company key) <second_email@test.com>" [ultimate]\ngpg:                 aka "Furkan <first_email@test.com>" [ultimate]\nAuthor: MyGitHubNickname <second_email@test.com>\n...\n
Run Code Online (Sandbox Code Playgroud)\n

本地配置设置:

\n
$ git config --local --list\n\n...\nuser.name=Furkan\nuser.email=second_email@test.com\n
Run Code Online (Sandbox Code Playgroud)\n

全局配置设置:

\n
$ git config --global --list\n\n...\nuser.name=MyGitHubNickname\nuser.email=second_email@test.com\nuser.signingkey=MY_40_CHARACTER_SIGNING_KEY\n
Run Code Online (Sandbox Code Playgroud)\n

但没有工作:

\n
$ git commit -S --amend --reset-author\n$ git push --force\n
Run Code Online (Sandbox Code Playgroud)\n

我在该弹出窗口的底部看到MY_GPG_KEY_ID密钥,完全相同。

\n

图片

\n

我按照GitHub 文档中所述对 GPG 密钥指南中的提交签名验证进行故障排除使用经过验证的电子邮件地址进行操作,但仍然没有解决问题。

\n

qit*_*shi 28

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

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

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

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

  • 如果您之前上传过相同的密钥,但只有一个地址,出于某种原因,如果您不先删除原始密钥,GitHub 将不允许您上传更新的密钥(“密钥已存在且公钥已存在”) 。 (6认同)