news 2026/5/30 0:35:52

SSH Key 与 GPG Key 区别详解:Git 使用中的身份与签名机制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SSH Key 与 GPG Key 区别详解:Git 使用中的身份与签名机制

一、先给结论(重点)

SSH key 和 GPG key 都不是“必须同时配置”
但它们的功能几乎不重叠,是做两件完全不同的事

实际使用建议:

  • SSH key:几乎所有开发者都必须配置
  • GPG key:只有在“需要提交可信度或签名”的情况下才配置

二、一张表看懂 SSH key 与 GPG key

维度SSH keyGPG key
解决的问题你是谁?你有没有权限?这次提交是不是你本人写的?
用在 Git 的位置clone / pull / pushcommit / tag 签名
是否参与网络连接✅ 是(建立 SSH 连接)❌ 否(只对数据进行签名)
没有它会怎样无法拉取或推送代码能用 Git,但提交不“可信”
GitLab/GitHub 必需性✅ 是❌ 否
常见错误提示Permission denied (publickey)gpg failed to sign the data
是否能互相替代❌ 完全不能❌ 完全不能

三、用一句人话理解区别

SSH key = 门禁卡

  • 作用:验证你能不能进入 Git 仓库

  • 特点

    • 没有它就无法 clone / pull / push
    • 连接层的身份认证
  • 类比:就像公司大楼的门禁卡,你没卡就进不去办公楼


GPG key = 亲笔签名 / 公章

  • 作用:验证提交内容是否真的来自你本人

  • 特点

    • 提交可以照样被 Git 接收,但不显示“Verified”标志
    • 内容层的真实性校验
  • 类比:就像在文件上签名或盖章,别人可以确认是你签的,而不是别人伪造


四、为什么它们看起来有重叠?

很多新手误解在于:

  • 两者都叫key
  • 都跟Git有关

但核心区别在于信任对象不同

  • SSH key→ 服务器信任你
  • GPG key→ 其他开发者信任你的提交内容

信任的方向不同,所以功能完全不重叠。


五、到底需不需要两个都配置?

大部分开发者情况

情况建议配置
公司 GitLab / GitHub✅ SSH key
私有项目 / 日常开发SSH key 即可
开源项目 / 安全要求高SSH + GPG
需要显示提交 Verified必须 GPG

总结:

  • 90% 开发者只需 SSH key
  • GPG key 是可选增强安全措施

遇到实际问题的判断

如果你在执行git pushgit pull时遇到:

Permission denied (publickey)

说明:

  • 缺 SSH key 或配置不对
  • GPG key 对这个问题完全没帮助

正确组合应为:

SSH key → 用来 clone / pull / push GPG key → 用来 sign commit(可选)

六、SSH key 与 GPG key 的使用流程

SSH key 流程

  1. 生成 SSH key(ssh-keygen
  2. 将公钥添加到 Git 服务器(GitHub/GitLab)
  3. 使用 SSH 协议 clone / push / pull
  4. SSH 自动完成身份验证

GPG key 流程

  1. 生成 GPG key(gpg --full-generate-key

  2. 将公钥上传到 Git 服务器

  3. 配置 Git 使用该 GPG key 签名提交:

    gitconfig --global user.signingkey<GPG_KEY_ID>gitcommit -S -m"Your commit message"
  4. 其他人拉取代码时可验证签名真实性


七、总结一句话

SSH key 解决“我能不能访问仓库”
GPG key 解决“这次提交是不是我本人写的”

换句话说:

  • SSH key = 门禁卡
  • GPG key = 亲笔签名 / 公章

理解了这一点,再也不会混淆,也能根据自己的需求灵活配置。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 2:50:41

爆肝整理,性能测试-内存问题定位分析+常见业务场景bug(汇总)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、性能测试-内存…

作者头像 李华
网站建设 2026/5/29 23:44:11

国歌下载地址

https://www.gov.cn/guoqing/guoge/index.htm

作者头像 李华
网站建设 2026/5/20 12:26:37

基于springboot的机票预定系统的设计与实现 计算机毕业设计选题 计算机毕设项目 前后端分离【源码-文档报告-代码讲解】

&#x1f34a;作者&#xff1a;计算机毕设匠心工作室 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目…

作者头像 李华
网站建设 2026/5/25 18:23:36

收藏备用!SLM与LLM深度对比:小模型为何成企业AI落地新选择

本文深度拆解小型语言模型&#xff08;SLM&#xff09;与大型语言模型&#xff08;LLM&#xff09;的核心特性及差异&#xff0c;聚焦SLM在垂直领域精度、部署灵活性、成本控制等维度的突出优势&#xff0c;尤其适配中小企业及细分场景落地需求。结合最新实战案例&#xff0c;展…

作者头像 李华