使用SSH时git commit -S签名失败却仍完成提交的问题
Git SSH签名提交显示未验证的解决方法
先明确:你的提交其实已经完成签名了
从你提供的git cat-file -p HEAD输出能看到,提交里已经包含gpgsig字段和完整的SSH签名内容,说明签名操作本身是成功的。问题出在本地日志默认显示逻辑和平台验证规则两个层面。
1. 让本地git log显示签名状态
git log默认不会展示SSH签名的验证信息,只需添加参数即可查看:
git log --show-signature
执行后会看到类似这样的输出,确认本地验证通过:
commit 4d3bd971f2bfbjdue0d8258e5fae982492082fcd (HEAD -> example) Good "ssh" signature for Example <example@domain.com> with ED25519 key SHA256:xxxxxx Author: Example <example@domain.com> Date: Sun Feb 4 17:25:58 2024 +0200 example
2. 解决平台PR提示未验证的问题
Git平台(如GitHub/GitLab)区分推送用SSH密钥和签名验证用SSH密钥,你需要把签名公钥添加到专门的签名密钥区域:
- 进入平台账户设置的SSH密钥管理页面
- 新建SSH密钥时,选择「Signing key」类型(不要选普通的Authentication key)
- 粘贴你的
id_ed25519.pub完整内容并保存
3. 优化Git配置避免路径问题
如果担心user.signingkey的路径出错,可以直接把公钥内容写入配置:
git config --global user.signingkey "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGd+0zpC6Eq8X30s9cXSGFeROpzJxMZKyjlm+30PHKFwE"
这样无需依赖本地文件路径,配置更稳定。
内容的提问来源于stack exchange,提问作者user23345005
相关产品推荐
相关产品推荐

