Debian配置Git提交签名遇gpg.format: ssh不支持错误求助
问题根源
你碰到的错误核心原因是Debian系统默认安装的Git版本过低。SSH格式的提交签名是Git 2.34版本才正式引入的功能,旧版本Git无法识别gpg.format=ssh这个配置项;而你Windows主机上的Git版本大概率是较新的,所以能正常运行该配置。
先确认当前Git版本:
git --version
如果输出的版本号低于2.34.0,就可以确定是版本兼容问题。
解决方案一:升级Git到2.34+版本
Debian稳定版的软件源里Git版本通常偏旧,需要借助backports源安装新版本:
编辑backports源配置文件(以Debian 11 bullseye为例):
sudo nano /etc/apt/sources.list.d/backports.list添加以下内容:
deb http://deb.debian.org/debian bullseye-backports main若使用Debian 12 bookworm,将
bullseye-backports替换为bookworm-backports即可。更新软件源并安装新版Git:
sudo apt update sudo apt -t bullseye-backports install git验证升级结果:
git --version确认版本≥2.34.0后,重新执行
git commit就不会报错,之前的SSH签名配置可继续使用。
解决方案二:改用GPG签名(不升级Git)
如果暂时不想升级Git,可切换回传统的GPG签名方式:
先移除旧的SSH签名配置:
git config --global --unset gpg.format git config --global --unset user.signingkey生成GPG密钥:
gpg --full-generate-key按提示选择密钥类型(推荐RSA,密钥长度选4096)、有效期、个人信息,完成密钥生成。
获取GPG密钥ID:
gpg --list-secret-keys --keyid-format=long输出中类似
sec rsa4096/ABCDEFG123456789的字符串,ABCDEFG123456789就是你的密钥ID。配置Git使用该密钥:
git config --global user.signingkey ABCDEFG123456789(可选)把GPG公钥上传到GitHub:
gpg --armor --export ABCDEFG123456789复制输出的公钥内容,到GitHub的「Settings → SSH and GPG keys」页面添加GPG密钥。
最后测试签名提交:
git commit -S -m "test signed commit"
内容的提问来源于stack exchange,提问作者Siggi

