GitHub SSH 密钥注册指南
了解如何在 GitHub 账户上注册 SSH 密钥,以便在克隆仓库和进行身份验证时无需每次输入密码。
📋 概述
SSH (Secure Shell) 是一种协议,可以通过安全的身份验证而无需在网络上发送密码。通过在 GitHub 上注册 SSH 密钥对,您可以克隆、拉取和推送仓库,而无需每次输入凭据。
GitHub 支持两种类型的 SSH 密钥:
- Ed25519 (推荐) — 现代、安全,且密钥体积更小
- RSA (4096位) — 用于兼容性,如果您的系统不支持 Ed25519,则使用此类型
🛠️ 设置步骤
1. 检查现有 SSH 密钥
在生成新密钥之前,请检查您是否已有一个密钥。
Linux / macOS / WSL:
ls -la ~/.ssh/
Windows (PowerShell):
Get-ChildItem $env:USERPROFILE\.ssh
查找名为 id_ed25519、id_ed25519.pub、id_rsa 或 id_rsa.pub 的文件。如果您已有想要使用的密钥对,请跳至第 3 步。
2. 生成新的 SSH 密钥
使用 Ed25519 算法生成新的 SSH 密钥(推荐)。
Linux / macOS / WSL:
ssh-keygen -t ed25519 -C "<your-email@example.com>"
Windows (PowerShell):
ssh-keygen -t ed25519 -C "<your-email@example.com>"
当提示输入文件位置时,按 Enter 接受默认位置(~/.ssh/id_ed25519)。
当提示输入密码短语时,您可以输入安全的密码短语或按 Enter 留空。使用密码短语可以增加额外的安全层来保护私钥。
3. 查看并复制您的公钥
显示您的公钥并复制到剪贴板。
Linux / macOS / WSL:
cat ~/.ssh/id_ed25519.pub
Windows (PowerShell):
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub
公钥以 ssh-ed25519 或 ssh-rsa 开头,以您的电子邮件地址结尾。选择全部输出内容并复制。
⚠️ 安全注意事项: 切勿分享或公开您的私钥(
id_ed25519或id_rsa,不带.pub)。只有公钥(id_ed25519.pub)可以安全分享。
4. 在 GitHub 上注册密钥
- 登录 GitHub
- 点击您的头像 → Settings
- 在左侧边栏中点击 SSH and GPG keys
- 点击 New SSH key
- 在 Title 字段中输入描述性标签(例如
我的笔记本、办公电脑) - 在 Key 字段中粘贴您的公钥
- 点击 Add SSH key
5. 测试连接
验证您的 SSH 密钥是否正确注册。
ssh -T git@github.com
首次连接时您可能会看到以下警告:
The authenticity of host 'github.com (IP 地址)' can't be established.
RSA key fingerprint is SHA256:xxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
输入 yes 并按 Enter。如果成功,您将看到:
Hi <username>! You've successfully authenticated, but GitHub does not provide shell access.
6. 使用 SSH 克隆仓库
确认连接后,使用 SSH 地址克隆仓库。
git clone git@github.com:<owner>/<repository>.git
将 <owner> 替换为仓库所有者,将 <repository> 替换为仓库名称。
🔍 验证 SSH 密钥注册
要列出您 GitHub 账户上注册的所有 SSH 密钥:
- 进入 Settings → SSH and GPG keys
- 查看已注册密钥的列表,包括标题和创建日期
🩺 故障排除
| 症状 | 原因 | 解决方案 |
|---|---|---|
Permission denied (publickey) | 未注册 SSH 密钥,或使用了错误的密钥 | 确认您的公钥已在 GitHub 上注册。确保您使用的是正确的私钥。 |
ssh -T 显示 "successfully authenticated" 但 git 操作失败 | 密钥未添加到特定仓库 | 确保您的 SSH 密钥在该仓库设置中具有读/写权限。 |
| 连接超时 | 防火墙或网络问题阻断了 22 端口 | 检查您的网络设置,或尝试改用 HTTPS。 |
git@github.com: Permission denied | 远程 URL 格式错误 | 在远程 URL 中使用 git@github.com:(冒号)而不是 https://github.com/。 |
| "Too many authentication failures" | 服务器因密钥尝试次数过多而拒绝 | 使用 ssh -vT git@github.com 进行调试,或使用 -i ~/.ssh/id_ed25519 指定密钥。 |
🔒 安全最佳实践
- 切勿分享您的私钥(
id_ed25519或id_rsa)。不要将其附加到 issues、邮件中,或提交到仓库。 - 生成 SSH 密钥时使用密码短语来保护私钥,即使您的设备被入侵也能多一层保护。
- 每个设备使用唯一的 SSH 密钥 — 为您的笔记本电脑、台式机和服务器分别注册不同的密钥。
- 定期审查已注册的密钥 — 从您的 GitHub 账户中移除旧或不用的 SSH 密钥。
- 对于需要集中管理密钥的组织,考虑使用 SSH 证书。
📚 参考
版本: 1.0
最后更新: 2026-09-24
源文件: giipv3/public/help/github-ssh-key.zh-CN.md