在 GitHub 上查看提交日志时,您可能会注意到某些提交旁边有一个绿色的“已验证”徽章。此标签表明提交已经过加密签名并确认来自合法的、经过验证的用户。
默认情况下,Git 允许开发人员使用 git config user.email 等简单命令配置他们选择的任何名称和电子邮件地址。这意味着冒充是微不足道的。为了保证身份验证并防止未经授权的贡献,强烈建议提交签名。
在本指南中,我们将探讨如何使用 GPG 或 SSH 密钥设置 Git 提交签名,以在 GitHub 上获得您自己的“已验证”徽章。
1.什么是提交签名?
当您运行 git commit 命令时,提交签名使用公钥加密技术将数字签名附加到提交数据。
这保证了两个关键的安全概念:
- 不可否认性:验证提交确实是由密钥所有者创作的。
- 数据完整性:确保自应用签名以来提交元数据和文件更改未被修改或篡改。
虽然 GPG (GNU Privacy Guard) 密钥历来是唯一的选择,但 Git 现在原生支持使用 SSH 密钥 进行提交签名,这使得已经使用 SSH 密钥推送代码的开发人员的设置变得更加简单。在本指南中,我们将重点关注 SSH 密钥签名。
2. 设置 SSH 密钥提交签名
第 1 步:找到或生成 SSH 密钥
确定 SSH 公钥的路径(通常为 ~/.ssh/id_ed25519.pub)。如果您没有,请使用以下命令生成它:
ssh-keygen -t ed25519 -C "[email protected]"
步骤 2:配置 Git 使用 SSH 进行签名
运行以下命令告诉 Git 使用您的 SSH 密钥对提交进行签名:
# Instruct Git to use SSH as the cryptographic format
git config --global gpg.format ssh
# Point Git to your SSH public key file
git config --global user.signingkey ~/.ssh/id_ed25519.pub
步骤 3:启用全局自动签名
为了避免在每次提交时手动输入 -S ,请将 Git 配置为自动签署所有提交:
git config --global commit.gpgsign true
3. 向 GitHub 注册密钥
为了让 GitHub 验证签名,您必须将公共签名密钥上传到您的个人资料:
- 复制您的公钥的内容(例如
cat ~/.ssh/id_ed25519.pub)。 - 导航到您的 GitHub 个人资料,然后转到 设置 > SSH 和 GPG 密钥。
- 单击“新 SSH 密钥”。
- 在 密钥类型 下拉菜单中,选择 签名密钥(而不是身份验证密钥)。
- 粘贴您的公钥并单击“添加 SSH 密钥”。
4. 验证配置
在存储库中创建一个虚拟提交:
git commit -m "chore: test signed commit"
您可以使用 log 命令在本地检查签名:
git log --show-signature -n 1
如果成功,您将看到以下开头的验证日志: 占位符_0
推送后,GitHub 将在您的提交旁边显示绿色的“已验证”徽章。
结论
设置提交签名是一种快速、高效的安全升级。借助现代 Git 版本中基于 SSH 的签名的支持,配置此安全网比以往更加简单。保护您的代码身份并立即开始签署您的提交。

