跳过导航,直达内容

第22章:SSH Key 配置 🔑

HTTPS 每次都要输密码(或 Token),太麻烦!SSH Key 可以让你”免密”操作。

📋 目录


为什么需要 SSH Key?

HTTPS vs SSH 对比

方式 优点 缺点
HTTPS 简单,不需要配置 ❌ 每次要输密码/Token
SSH ✅ 一次配置,永久免密 需要生成和配置 Key

使用场景

推荐用 SSH 的场景:
├── 你每天都在用 Git 推送代码
├── 你不想每次都输 Token
└── 你想更安全地连接 GitHub

推荐用 HTTPS 的场景:
├── 你只是偶尔下载代码
├── 你在公司内网(SSH 端口可能被封)
└── 你觉得配置 SSH 太麻烦

生成 SSH Key

步骤详解

第1步:检查是否已有 SSH Key

# 查看是否有现成的 Key
ls -al ~/.ssh

# 如果看到以下文件,说明已经有了:
# id_rsa      (私钥)
# id_rsa.pub  (公钥)
# id_ed25519
# id_ed25519.pub

💡 如果已经有了,跳过生成步骤!


第2步:生成新的 SSH Key

# 推荐使用 ed25519 算法(更安全、更快)
ssh-keygen -t ed25519 -C "你的邮箱@example.com"

# 如果是旧系统(不支持 ed25519),用 RSA:
ssh-keygen -t rsa -b 4096 -C "你的邮箱@example.com"

交互式提问:

Enter file in which to save the key
(/c/Users/你/.ssh/id_ed25519):
→ 直接按回车(使用默认路径)

Enter passphrase (empty for no passphrase):
→ 输入密码(推荐!增加安全性)
→ 不输入也可以(但不安全)

Enter same passphrase again:
→ 再次输入密码

💡 是否设置密码?

  • ✅ 推荐设置:即使私钥泄露,没有密码也用不了
  • ❌ 不设置:方便,但安全性低

第3步:启动 SSH Agent

# 启动 ssh-agent
eval "$(ssh-agent -s)"

# 添加私钥到 ssh-agent
ssh-add ~/.ssh/id_ed25519

# 如果设置了密码,会要求输入一次

添加到 GitHub

步骤详解

第1步:复制公钥

# 查看公钥内容
cat ~/.ssh/id_ed25519.pub

# 复制输出的内容(包括 ssh-ed25519 开头和邮箱结尾)

示例输出:

ssh-ed25519 AAAAC3NzaC1lE2EAAAAI... 你的邮箱@example.com

⚠️ 注意:

  • 复制公钥(.pub 文件),不是私钥!
  • 私钥(id_ed25519,没有 .pub 后缀)要保密!

第2步:在 GitHub 上添加

1. 登录 GitHub
2. 点击右上角头像 → Settings
3. 左侧菜单找到 SSH and GPG keys
4. 点击 New SSH key
5. 填写信息:
   ├── Title: 给你的 Key 起个名字(如:My Laptop)
   ├── Key type: Authentication Key
   └── Key: 粘贴刚才复制的公钥内容
6. 点击 Add SSH key

测试连接

测试命令

# 测试是否能连接 GitHub
ssh -T git@github.com

# 第一次会提示:
The authenticity of host 'github.com (140.82.121.3)' can't be established.
...
Are you sure you want to continue connecting (yes/no/[fingerprint])?

# 输入 yes 并回车

成功的输出:

Hi GTX950L! You've successfully authenticated, but GitHub does not provide shell access.

🎉 成功! 你现在可以用 SSH 克隆和推送了。


修改远程仓库地址

# 查看当前远程地址(大概率是 HTTPS)
git remote -v
# 输出:
# origin  https://github.com/GTX950L/github-encyclopedia.git (fetch)
# origin  https://github.com/GTX950L/github-encyclopedia.git (push)

# 改成 SSH 地址
git remote set-url origin git@github.com:GTX950L/github-encyclopedia.git

# 验证
git remote -v
# 输出:
# origin  git@github.com:GTX950L/github-encyclopedia.git (fetch)
# origin  git@github.com:GTX950L/github-encyclopedia.git (push)

以后 git push 就不再需要输密码了! 🎉


🔏 GPG Commit 签名

什么是 GPG 签名?

GPG(GNU Privacy Guard) 可以为你的 Commit 打上”数字签名”,证明这个提交确实是你本人做的,而不是别人冒充的。

有没有签名有什么区别?

未签名的 Commit:                       已签名的 Commit:
Author: GTX950L                         Author: GTX950L
                                        GPG signature: ✅ Verified
                                        
在 GitHub 上,签名后的 Commit               
会显示 ✅ Verified 绿色徽章                  

配置步骤

第1步:安装 GPG

# Windows 用户
# 下载安装 Gpg4win: https://www.gpg4win.org/

# macOS
brew install gpg

# Linux (Ubuntu/Debian)
sudo apt install gpg

第2步:生成 GPG Key

# 生成新 Key(按提示输入姓名和邮箱)
gpg --full-generate-key

# 推荐选项:
# - 密钥类型:RSA and RSA (default)
# - 密钥长度:4096
# - 过期时间:0(永不过期)

第3步:查看并导出公钥

# 列出你的 GPG Key
gpg --list-secret-keys --keyid-format LONG

# 输出示例(sec 后面的就是 Key ID):
# sec   rsa4096/ABC123DEF456GHIJ 2026-01-01
# uid                 [ultimate] GTX950L <your@email.com>

# 导出公钥(替换为你的 Key ID)
gpg --armor --export ABC123DEF456GHIJ

第4步:添加到 GitHub

1. 复制上面的公钥(从 -----BEGIN PGP PUBLIC KEY BLOCK----- 开始
   到 -----END PGP PUBLIC KEY BLOCK----- 结束)
2. 进入 GitHub Settings → SSH and GPG keys
3. 点击 "New GPG key"
4. 粘贴公钥 → 保存

第5步:配置 Git 使用 GPG 签名

# 告诉 Git 使用哪个 Key
git config --global user.signingkey ABC123DEF456GHIJ

# 全局启用签名(所有 Commit 都自动签名)
git config --global commit.gpgsign true

# 或者只对特定项目启用
cd your-project
git config commit.gpgsign true

验证效果

# 创建并推送一个 Commit
git commit -S -m "test: GPG 签名测试"
git push

# 在 GitHub 上查看这个 Commit →
# 会显示 ✅ Verified 绿色徽章!

💡 小贴士:配置一次后,后续每次 commit 都会自动签名,你不需要额外操作。


常见问题

Q1: 私钥泄露了怎么办?

A: ⚠️ 立即删除 GitHub 上的公钥!

步骤:
1. Settings → SSH and GPG keys
2. 找到对应的 Key
3. 点击 Delete
4. 生成新的 Key 对,重新添加

Q2: 多个电脑如何配置?

A: 每台电脑都需要自己的 SSH Key。

电脑 A:
├── 生成 Key 对
├── 添加公钥到 GitHub
└── 标题写 "My Laptop"

电脑 B:
├── 生成 Key 对
├── 添加公钥到 GitHub
└── 标题写 "My Office PC"

💡 不要 把同一对 Key 复制多台电脑(不安全)。


Q3: Windows 上如何生成 SSH Key?

A: 使用 Git Bash(安装 Git 时会自带)。

1. 右键桌面 → Git Bash Here
2. 运行 ssh-keygen 命令(和上面一样)
3. 私钥会保存在 C:\Users\你的用户名\.ssh\

📝 实战练习

练习1:配置你的第一对 SSH Key

任务:

  1. 生成 ed25519 Key 对
  2. 添加公钥到 GitHub
  3. 测试连接
  4. 修改一个仓库的远程地址为 SSH
  5. 推送一次,确认不需要输密码

练习2:为多台电脑配置

任务:

  1. 如果你有两台电脑(如公司和家里)
  2. 分别为它们生成 Key 对
  3. 都添加到 GitHub
  4. 确认都能免密推送

📚 延伸阅读


📝 本章小结

你现在学会了:

⚠️ 安全提醒

私钥 = 你的身份凭证,永远不要:

  • ❌ 提交到 GitHub
  • ❌ 发送给别人
  • ❌ 放在公共电脑上

← 返回目录  |  ← 上一章  |  下一章 →