首页/开发/Git 与协作速查/用 SSH 密钥签名提交
协作与代码评审75 条

用 SSH 密钥签名提交

Git 2.34 起支持 gpg.format=ssh:用已有 SSH 密钥签名,配置 allowedSignersFile 做本地验证,平台侧需上传同一公钥并启用。

Git 与协作速查开发更新于 2026-10-13

用 SSH 密钥签名

从 Git 2.34 起可以直接用已有的 SSH 密钥给提交签名,不必另行维护一套 GPG 密钥环。配置好签名格式与签名密钥之后,在平台侧上传同一把公钥并启用,提交就会显示验证通过。本地要验证别人的签名,还需要一份允许签名者清单。

基本信息

配置项签名格式设为 ssh、签名密钥指向公钥路径、允许签名者清单用于本地验证
版本要求Git 2.34 及以上
平台支持主流平台支持 SSH 签名密钥并展示验证徽标
签名范围提交与标签都可以签名

典型使用场景

  • 团队已有 SSH 密钥体系,不想再维护 GPG 密钥环
  • 合规要求提交的来源可以验证
  • 用同一套工具链完成推送与签名
  • 需要给发布标签签名
  • 迁移签名方式时减少额外运维负担

常用配置

常用配置
git config --global gpg.format ssh                        # 指定使用 SSH 签名
git config --global user.signingkey ~/.ssh/id_ed25519.pub  # 指定签名使用的公钥
git config --global commit.gpgsign true                     # 每次提交自动签名
git log --show-signature -1                                 # 查看签名状态

配置项读法

配置项作用说明
签名格式选择签名后端设为 ssh 即使用 SSH 密钥
签名密钥指定使用的密钥一般填写公钥路径
允许签名者清单本地验证的依据未配置时无法判定有效性
自动签名开关默认给提交签名也可以按需手动指定
用 SSH 签名比较省事:不必额外维护 GPG 密钥环。但签名密钥与推送密钥仍建议分开管理,轮换时互不影响。
平台侧需要上传同一把公钥并启用签名功能,否则本机签名正常、平台上依然显示未验证。

启用步骤

  • 先在本地配置签名格式与签名密钥,试签一次确认可行
  • 把同一把公钥添加到平台账号的签名密钥设置里
  • 在允许签名者清单中登记协作者公钥,便于本地验证
  • 确认提交在平台上显示验证通过之后,再推广到整个团队

易错点

  • 允许签名者清单未配置时本地查看会提示无法验证,这不等于签名本身无效
  • 同一把 SSH 密钥兼作推送与签名时,密钥轮换需要同步更新平台两侧的配置
  • 只配置了本地自动签名而忘记在平台登记公钥,提交仍然显示未验证
  • 在共享或临时环境中开启自动签名,可能把不该使用的密钥写进提交记录

数据来源与参考

  • Git 官方文档:git-config(gpg.format=ssh)
  • GitHub Docs:Signing commits(SSH keys)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌