在GitHub上提交代码获得Verified签名标识

要在 GitHub 上提交代码并获得 ✅ “Verified” 签名标识,你需要使用 GPG(GNU Privacy Guard)或 SSH 密钥 来对你的提交进行签名。GitHub 会验证签名是否与你的账户绑定,从而显示 “Verified” 标签。

下面是完整的流程,使用 GPG 签名方式(更常见):

GPG 签名

第一步:生成 GPG 密钥

如果你还没有 GPG 密钥,可以用以下命令生成:

1
gpg --full-generate-key

选择:

  • 类型:RSA and RSA(默认)

  • 密钥长度:4096

  • 有效期:根据你需要设置

  • 姓名和邮箱:必须与 GitHub 上的邮箱一致

  • 密码:用于保护你的密钥

生成后,列出你的密钥:

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

你会看到类似:

1
2
sec   rsa4096/ABCD1234EF567890 2025-08-17 [SC]
uid Your Name <[email protected]>

记住 ABCD1234EF567890,这是你的 GPG key ID。

第二步:将 GPG 公钥添加到 GitHub

导出你的公钥:

1
gpg --armor --export ABCD1234EF567890

复制输出的内容(以 -----BEGIN PGP PUBLIC KEY BLOCK----- 开头),然后:

  1. 登录 GitHub

  2. 进入 Settings → SSH and GPG keys

  3. 点击 “New GPG key”

  4. 粘贴你的公钥,保存

第三步:配置 Git 使用 GPG 签名

设置 Git 使用你的 GPG 密钥:

1
2
git config --global user.signingkey ABCD1234EF567890
git config --global commit.gpgsign true

确保你的 Git 用户邮箱与 GitHub 上的邮箱一致:

1
git config --global user.email "[email protected]"

第四步:提交代码并签名

现在你可以正常提交代码:

1
2
git add .
git commit -m "Your commit message"

Git 会自动使用 GPG 签名提交。

你也可以手动签名:

1
git commit -S -m "Your commit message"

然后推送:

1
git push origin main

在 GitHub 上查看你的提交,应该会看到:

✅ Verified

验证签名是否成功(本地)

你可以运行:

1
git log --show-signature

附加提示
如果你使用的是 GUI 工具或 VS Code,也可以配置 GPG 签名支持。

如果你使用的是 WSL 或非标准终端,可能需要设置 GPG_TTY:

1
export GPG_TTY=$(tty)

SSH 签名

GitHub 从 2023 年开始支持使用 SSH 密钥签名提交(SSH commit signing),这是一个比 GPG 更简单的方式来获得 ✅ Verified 标签,而且配置起来也更轻松。

步骤概览:

  1. 生成支持签名的 SSH 密钥(Ed25519)

  2. 配置 Git 使用该密钥进行签名

  3. 添加公钥到 GitHub

  4. 提交并签名代码

  5. 推送并查看 Verified 标签

第一步:生成支持签名的 SSH 密钥

GitHub 要求使用 Ed25519 密钥(支持签名),运行:

1
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_ed25519_signing

这会生成两个文件:

  • ~/.ssh/id_ed25519_signing(私钥)

  • ~/.ssh/id_ed25519_signing.pub(公钥)

第二步:将公钥添加到 GitHub

  1. 登录 GitHub

  2. 进入 Settings → SSH and GPG keys

  3. 点击 “New SSH key”

  4. 粘贴 id_ed25519_signing.pub 的内容

  5. 选择 “Signing Key”

  6. 点击 “Add SSH key”

第三步:配置 Git 使用 SSH 签名

告诉 Git 使用这个私钥进行签名:

1
2
3
git config --global user.signingkey ~/.ssh/id_ed25519_signing
git config --global gpg.format ssh
git config --global commit.gpgsign true

你也可以设置 Git 用户信息:

1
2
git config --global user.name "Your Name"
git config --global user.email "[email protected]"

第四步:签名提交代码

正常提交即可:

1
2
git add .
git commit -m "Add awesome feature"

Git 会自动使用 SSH 密钥进行签名。

第五步:推送并查看 Verified 标签

1
git push origin main

然后打开 GitHub,查看你的提交记录,你应该会看到:

✅ Verified

表示你的提交已经通过 SSH 签名验证!

验证签名(本地)

你可以运行:

1
git log --show-signature

会显示类似:

1
2
gpg: Signature made using ED25519 key ID ABCD1234EF567890
gpg: Good signature from "Your Name <[email protected]>"

附加提示

  • SSH 签名方式不需要安装 GPG,非常适合不想折腾密钥管理的用户。

  • 你可以为不同项目使用不同的 SSH 密钥。

  • 如果你用 VS Code 或其他 Git GUI,也可以启用 SSH 签名支持。