【Gitee】SSH 公钥、GPG 公钥、私人令牌的区别
一、核心对比表
| 维度 | 🔑 SSH 密钥 | ✍️ GPG 密钥 | 🎫 私人令牌 |
|---|---|---|---|
| 本质 | 密钥对(公钥+私钥) | 密钥对(公钥+私钥) | 一串随机字符串 |
| 作用 | 免密 push/pull 的身份认证 | 给 commit签名,证明是你提交的 | 代替密码认证 / 调 API |
| 生成位置 | 本地终端ssh-keygen | 本地终端gpg | Gitee网页上生成 |
| 配到 Gitee | 上传公钥 | 上传公钥 | 无需上传,网页直接生成 |
| 怎么用 | 远程地址用 SSH 形式 | 配置 git 后每次提交自动签名 | 密码栏填 token / API 请求头 |
| 秘密部分 | 私钥留本地 | 私钥留本地 | 整串都是秘密 |
| 能否"登录" | ✅ 能 | ❌ 不能 | ✅ 能(代替密码) |
二、分别怎么生成、怎么用
🔑 SSH 密钥
# 生成(本地) ssh-keygen -t ed25519 -C "你的邮箱@example.com" # 生成两个文件:~/.ssh/id_ed25519(私钥,留在本地)和 id_ed25519.pub(公钥)配到 Gitee:cat ~/.ssh/id_ed25519.pub复制 → Gitee 设置 → 安全设置 →SSH公钥→ 粘贴。
使用:远程地址换成 SSH 形式,push 自动认证:
git remote set-url origin git@gitee.com:用户名/仓库.git git push # 不再问密码✍️ GPG 密钥
# 生成(本地) gpg --full-generate-key # 姓名/邮箱要和 Gitee 账号一致 gpg --list-secret-keys --keyid-format=long # 记下 key ID(如 ABCD1234EFGH5678) gpg --armor --export ABCD1234EFGH5678 # 导出公钥配到 Gitee:复制导出内容 → Gitee 设置 → 安全设置 →GPG公钥→ 粘贴。
使用:配置 git 后,每次提交自动签名:
git config --global user.signingkey ABCD1234EFGH5678 git config --global commit.gpgsign true git commit -m "..." # 提交自动带签名,Gitee 显示绿色「已验证」🎫 私人令牌
生成:Gitee 网页 → 设置 → 安全设置 →私人令牌→ 生成新令牌(勾权限范围,⚠️只显示一次)。
使用(两种):
# 1) HTTPS push 时,密码栏填令牌 git push # Username: 用户名 / Password: 粘贴令牌 # 2) 调 API curl -H "Authorization: token 你的令牌" https://gitee.com/api/v5/user三、一句话记忆
| 想要什么 | 用什么 |
|---|---|
| push 时免输密码 | SSH 密钥 |
| 让提交防伪造(绿色已验证) | GPG 密钥 |
| 临时/受限的密码替代品、调 API | 私人令牌 |
关键区别再强调一遍:SSH 和 GPG 都是「本地生成密钥对、只上传公钥、私钥留本机」;私人令牌则是「网页直接生成一整个秘密字符串」,没有公私钥之分。
