当前位置: 首页 > news >正文

为什么设置 git commit签名是公钥而不是私钥?

下面是Github的文档,为什么设置 SSH 签名密钥是公钥而不是私钥?

将 SSH 密钥告知 Git
可以使用现有 SSH 密钥对提交和标记进行签名,或生成专用于签名的新密钥。 有关详细信息,请参阅“生成新的
SSH 密钥并将其添加到 ssh-agent”。

注意!!SSH 签名验证可用于 Git 2.34 或更高版本。 若要更新 Git 版本,请参阅 Git 网站。

  1. 打开终端。

  2. 配置 Git 使用 SSH 对提交和标记签名:
    git config --global gpg.format ssh

  3. 若要在 Git 中设置 SSH 签名密钥,请粘贴下面的文本,将
    /PATH/TO/.SSH/KEY.PUB 替换为要使用的公钥路径:
    git config --global user.signingkey /PATH/TO/.SSH/KEY.PUB

你提到的 GitHub 文档中,确实是让你设置公钥路径作为 Git 的 user.signingkey,很多人会疑惑:不是应该使用私钥签名吗?为什么要设置公钥?

这个问题的关键在于 你设置的是 “用于标识签名者的身份”,而真正用来做签名的仍然是私钥,只是它不需要你手动设置


✅ 为什么设置公钥而不是私钥?

  • 签名操作用的是私钥,这个私钥应该已经被你放在 ~/.ssh 中,并且由 ssh-agent 管理。

  • Git 配置中设置的是 “用于识别你的公钥”,也就是告诉 Git:

    “这个是我用来签名的私钥对应的公钥,请用这个公钥计算指纹,写入到签名信息中。”

这样,GitHub 在验证签名时可以:

  1. 从 Git 提交中读取签名信息和声明使用的公钥指纹。
  2. 用你上传到 GitHub 的公钥比对这个指纹。
  3. 如果匹配上了,就认定这个提交是你签的。

🔐 私钥在哪里?

私钥从不应该出现在 Git 配置中,出于安全原因。正确的做法是:

  • 私钥保存在本地 ~/.ssh/id_ed25519(或你自定义生成的)。
  • 它被 ssh-agent 加载(你可以用 ssh-add 加入)。
  • Git 会自动调用 ssh-agent 中的私钥来做签名。

⚙️ 总结

项目内容
签名用的是私钥(由 ssh-agent 管理)
Git 配置的是公钥路径(用于识别签名用的密钥)
GitHub 验证方式从你设置的 signingkey 获取指纹,匹配 GitHub 上传的公钥
为什么不用私钥因为私钥必须保密,不应写入配置或上传

如果你还没生成或配置 SSH 密钥用于签名,可以参考这一步(生成只用于签名的新密钥):

ssh-keygen -t ed25519 -C "signing key" -f ~/.ssh/id_ed25519_signing
ssh-add ~/.ssh/id_ed25519_signing

然后设置签名:

git config --global gpg.format ssh
git config --global user.signingkey ~/.ssh/id_ed25519_signing.pub

你还需要把公钥 .pub 添加到 GitHub 的「SSH and GPG keys → SSH Signing Keys」里。

http://www.dtcms.com/a/294057.html

相关文章:

  • Flutter学习笔记(四)---基础Widget
  • 大厂总结常用分析问题方法之CMMI-IDEAL模型
  • 【unitrix】 6.13 类型级整数的按位取反(Not)操作实现(not.rs)
  • C++(面向对象封装、继承、多态)
  • 0018-基于单片机颜色识别系统设计
  • 数据结构系列之二叉搜索树
  • 单片机-----基础知识整合
  • 【图论,拓扑排序】P1347 排序
  • Rocky9部署Zabbix7(小白的“升级打怪”成长之路)
  • MySQL用户管理(15)
  • AI安全“面壁计划”:我们如何对抗算法时代的“智子”封锁?
  • 漏洞生命周期管理:从发现到防护的全流程方案
  • Linux权限机制:设计哲学、实现原理与安全实践
  • 如何加固Endpoint Central服务器的安全?(下)
  • adb: CreateProcessW failed: 系统找不到指定的文件
  • RAG项目实战:LangChain 0.3集成 Milvus 2.5向量数据库,构建大模型智能应用
  • uniapp+vue3小程序点击保存图片、保存二维码
  • 盘古信息PCB解决方案:重构PCB制造基因,开启智造新纪元
  • 半导体 CIM(计算机集成制造)系统
  • 三大论坛联动,2025合成生物学盛会助力生物制造高质量发展
  • 设备仿真合集 | 工业制造数字孪生协同管控
  • Docker详解及实战
  • 【轨物洞见】光伏逆变器数据:分布式电站价值回归的“第一块多米诺骨牌”
  • mac测试ollama llamaindex
  • Log4j CVE-2021-44228 漏洞复现详细教程
  • fastdds:默认qos入门
  • LeetCode|Day23|326. 3 的幂|Python刷题笔记
  • 牛客刷题 -- 二叉树遍历
  • 百度大涨,AIGC视频生成模型蒸汽机将会给百度带来什么?
  • 【Windows命令手册】Windows中的常用命令,并与 Linux 做比较