Git提交GitHub失败:无密钥报错及密钥有效性排查求助
解决Git带签名提交报错:No secret key
你当前的gpg --list-keys只显示了公钥,没有对应的私钥(私钥是签名提交的必需凭证),报错提示找不到密钥2FE08EC7CD33715B的私钥,核心问题是本地缺少签名用的私钥,或Git未正确关联私钥。以下是具体解决步骤:
第一步:确认本地是否存在私钥
执行命令查看私钥列表:
gpg --list-secret-keys
- 若输出中没有出现密钥ID
2FE08EC7CD33715B,说明私钥丢失,需重新生成或导入备份私钥。 - 若存在该私钥,直接跳转至第三步处理Git配置问题。
第二步:重新生成GPG密钥(私钥丢失时)
- 执行密钥生成命令:
gpg --full-generate-key
- 按提示选择密钥类型(推荐RSA),设置密钥长度(至少2048位,推荐3072位),设置过期时间,填写与Git配置一致的用户名和邮箱(可通过
git config user.name、git config user.email查看)。 - 生成完成后,再次执行
gpg --list-secret-keys获取新的密钥短ID(取公钥行最后8位即可)。
第三步:配置Git关联GPG密钥
- 设置Git默认签名密钥(替换为你的密钥短ID,例如
CD33715B):
git config --global user.signingkey CD33715B
- (Windows系统可能需要)指定GPG程序路径,根据实际安装路径调整:
git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"
第四步:将公钥同步到GitHub
- 导出公钥(替换为你的密钥ID):
gpg --armor --export CD33715B
- 复制输出的完整公钥内容(从
-----BEGIN PGP PUBLIC KEY BLOCK-----到-----END PGP PUBLIC KEY BLOCK-----),粘贴到GitHub账户的「Settings → SSH and GPG keys → New GPG key」中。
第五步:测试签名提交
执行测试命令验证配置:
git commit -S -m "测试签名提交"
若执行成功,说明配置完成,可正常提交带签名的commit到GitHub。
内容的提问来源于stack exchange,提问作者deepak s p
相关产品推荐
相关产品推荐

