You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SSH密钥签名Git提交?含配置报错与密钥备份问题

Git SSH密钥签名配置及密钥备份方案

签名配置报错问题解决

你已经正确设置了gpg.format = ssh和commit.gpgsign = true,不需要额外修改gpg.program配置,签名失败和GitHub显示校验不通过的问题按以下步骤修正即可:

  • 修正user.signingKey参数取值,二选一即可:
    • 最简单的填法:直接写签名用私钥的本地路径,ed25519默认密钥直接执行以下命令配置即可
    git config --global user.signingkey ~/.ssh/id_ed25519
    
    • 如果密钥已经加载到ssh-agent,也可以填公钥的核心内容,注意必须删掉公钥末尾的邮箱后缀,也就是只保留ssh-ed25519 <公钥字符串>部分,不要带最后面类似user@domain.io的注释内容。你之前传入了完整公钥带邮箱注释,是导致校验失败的原因之一。
  • 检查GitHub端公钥配置:GitHub对SSH登录密钥和SSH签名密钥做了隔离,你需要在账号的SSH密钥设置页面,选择「签名密钥」类型上传你的公钥,之前如果把公钥加到了登录认证密钥列表里,是无法通过提交签名校验的。
  • 版本校验:确保本地安装的Git版本≥2.34.0,低版本的SSH签名实现逻辑和GitHub的校验规则不兼容,会出现签名格式错误。

之前配置GPG签名时用到的GPG_TTY环境变量对SSH签名流程无效,不需要针对SSH签名额外配置该参数,只要确保ssh-agent正常加载了对应私钥即可正常签名。

签名密钥安全备份方案

不要明文存储密钥到网盘,行业通用的安全备份方案按优先级排序如下:

  • 硬件离线备份(最高安全等级):将设置了强passphrase的私钥文件拷贝到加密U盘/硬件密钥设备中,物理存放在安全位置,全程不联网可杜绝网络窃取风险
  • 端到端加密工具存储:将私钥内容作为加密笔记存入支持端到端加密的密码管理器,这类工具本身加密强度足够,只要主密码不泄露就不会出现密钥泄露或丢失问题
  • 纸质备份:ed25519类型密钥长度较短,可以将私钥转成base64编码后打印在纸上物理存放,需要恢复时手动输入即可,完全规避数字渠道的泄露风险
    注意:所有备份的密钥必须在生成时设置足够强度的passphrase,就算备份介质遗失,没有passphrase也无法冒用你的密钥签名。

内容的提问来源于stack exchange,提问作者user16435030

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 05:12:17