使用SSH签名Git提交时遭遇「无法加载公钥」错误的问题
Git SSH签名提交:无法加载公钥的问题解决
问题原因
你错误地将ssh-add -L输出的公钥文本字符串直接设置为user.signingKey的值,但Git在处理SSH签名时,user.signingKey参数要求的是公钥文件的绝对路径,而非公钥的文本内容。Git会把你输入的字符串当作文件名去系统中查找,自然找不到对应的文件,因此抛出"No such file or directory"错误。
解决步骤
将SSH签名公钥保存到文件
如果你的密钥是通过标准输入(stdin)添加到SSH代理的,先把公钥内容写入一个本地文件(比如~/.ssh/signing_key.pub):ssh-add -L | sed 's/ (stdin)$//' > ~/.ssh/signing_key.pub要是你原本就有生成时保存的公钥文件(比如
id_ecdsa.pub),直接使用该文件即可。修正Git的签名密钥配置
将user.signingKey设置为上述公钥文件的绝对路径:# 全局配置(所有仓库生效) git config --global user.signingKey ~/.ssh/signing_key.pub # 或仓库级配置(仅当前仓库生效) git config user.signingKey ~/.ssh/signing_key.pub验证签名提交
再次执行提交命令测试:git commit --allow-empty --message='signing using ssh!'
额外注意事项
- 确保你的Git版本≥2.34.0,这是Git支持SSH签名提交的最低版本要求。
- 确认SSH代理处于运行状态,且签名密钥已成功添加(可通过
ssh-add -l查看密钥指纹验证)。
内容的提问来源于stack exchange,提问作者gosuto
相关产品推荐
相关产品推荐

