Git 提交签名

Jul 29, 2025 · 2035 字

Git 提交签名是一个重要的安全特性,它可以确保提交的真实性和完整性。通过使用 GPG 密钥对提交进行签名,其他人可以验证提交确实是由特定的开发者创建的。在 GitHub 上表现为一个绿色的 Verified 标签。

可以使用 GPG、SSH 或 X.509 密钥签名。

使用 GPG 密钥

如果你使用 Windows,可以使用下面的命令先安装 GPG:

winget install GnuPG.GnuPG

然后生成一个新的 GPG 密钥:

gpg --full-generate-key
  • kind of key: 选择默认 RSA and RSA
  • RSA keysize:选择默认 3072
  • expire time:选择默认 0
  • name:和 GitHub 保持一致
  • email:和 GitHub 保持一致

完成后,会提示你输入一个 passphrase,这是用来保护私钥的,推荐填写一个较复杂的密码。

如果最后提示 Key generation failed: Input/output error,可能是因为系统随机数不足,可以通过执行一些系统操作(如移动鼠标、键盘输入等)来增加随机性,然后重新运行生成命令。

生成完成后,你可以使用下面的命令查看你的 GPG 密钥:

$ gpg --list-secret-keys
gpg: checking the trustdb
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
[keyboxd]
---------
sec   rsa3072 2026-01-24 [SC]
      5F28C18371B50E7DEB5001AF1BF5D39FA72F650F
uid           [ultimate] Saurlax <saurlax@qq.com>
ssb   rsa3072 2026-01-24 [E]
      BD6F2A1913A1822084307956F0DE6DB24B3368BF

其中 [SC] 表示该密钥可以用于签名和认证,[E] 表示该子密钥可以用于加密。记下 sec 行中的密钥 ID,你需要使用它来导出公钥。

然后使用下面的命令查看你的 GPG 公钥:

gpg --armor --export 5F28C18371B50E7DEB5001AF1BF5D39FA72F650F

在 GitHub 上添加 GPG 公钥即可。

最后记得在 Git 配置中设置你的 GPG 密钥:

git config --global user.signingkey 5F28C18371B50E7DEB5001AF1BF5D39FA72F650F

使用 SSH 密钥

注意:SSH 密钥签名需要 Git 2.34 或更高版本。

用于签名提交的密钥和认证密钥可以是同一个 SSH 密钥。你也可以使用下面的命令来生成一个新的 SSH 密钥:

ssh-keygen -C "your_email@example.com"

注意过程中需要重命名防止覆盖掉已有的密钥。

然后在 GitHub 上添加 SSH 公钥,类型选择为 Signing key

然后在 Git 配置中启用 SSH 签名:

git config --global gpg.format ssh
git config --global user.signingkey path/to/your/ssh/key

对提交进行签名

只需要在提交时添加 -S 选项即可:

git commit -S -m "Your commit message"

你也可以设置为默认签名提交:

git config --global commit.gpgsign true

参考文档

粤ICP备2025414119号 粤公网安备44030002006951号

© 2026 Saurlax · Powered by Astro