用 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 密钥环。但签名密钥与推送密钥仍建议分开管理,轮换时互不影响。
平台侧需要上传同一把公钥并启用签名功能,否则本机签名正常、平台上依然显示未验证。
启用步骤
- 先在本地配置签名格式与签名密钥,试签一次确认可行
- 把同一把公钥添加到平台账号的签名密钥设置里
- 在允许签名者清单中登记协作者公钥,便于本地验证
- 确认提交在平台上显示验证通过之后,再推广到整个团队