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

Git提交签名内部机制及user.signingkey配置疑问解答

Git SSH提交签名:为什么配置公钥路径?

问题背景

我了解基础加密、SSH密钥和证书相关知识。在配置Git提交签名时,执行了命令:

$ git config --global user.signingkey /PATH/TO/.SSH/KEY.PUB

这里产生了困惑:公钥是公开的,按加密逻辑应该用本地私钥签名,平台用已存储的公钥验证,为什么要配置公钥路径?

实际流程说明

我的推测是正确的:实际仍是用私钥完成签名,配置公钥的作用是让Git找到ssh-agent中加载的对应私钥,由ssh-agent调用私钥执行签名操作。

Git官方文档对此的说明(翻译后):

如果git-tag或git-commit在创建签名标签或提交时未自动选中你需要的密钥,可通过此变量覆盖默认选择。该选项会直接传递给gpg的--local-user参数,因此你可以使用gpg支持的任何方式指定密钥。**若gpg.format设置为ssh,当使用ssh-agent时,此选项可包含私钥或公钥的路径。也可直接传入前缀为key::的公钥(例如:"key::ssh-rsa XXXXXX identifier")。私钥需可通过ssh-agent访问。**若未设置此选项,Git会调用gpg.ssh.defaultKeyCommand(例如:"ssh-add -L")并尝试使用第一个可用的密钥。为保持向后兼容性,以"ssh-"开头的原始密钥(如"ssh-rsa XXXXXX identifier")会被视为"key::ssh-rsa XXXXXX identifier",但此形式已被弃用,建议使用key::形式。

简单来说,配置公钥路径是为了告诉Git:要使用ssh-agent中与该公钥配对的私钥来签名。这种方式更安全,因为Git不需要直接访问私钥文件,只需要通过公钥匹配到ssh-agent中已加载的私钥实例即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 05:41:19