生成 Git SSH 密钥是实现免密码安全访问代码仓库(如 GitHub、GitLab、Gitee)的关键步骤。以下是基于主流操作系统和最佳实践的完整操作指南。
1. 检查是否已存在密钥
在生成新密钥前,建议先检查本地是否已有可用的密钥对,避免重复生成或覆盖现有配置。
打开终端(Windows 用户可使用 Git Bash 或 PowerShell,macOS/Linux 用户直接使用终端),输入以下命令:
ls -al ~/.ssh
查看输出中是否包含 id_rsa.pub、id_ed25519.pub 等以 .pub 结尾的文件。
- 如果有:你可以直接使用现有的公钥,或通过 cat ~/.ssh/id_rsa.pub 查看内容并复制到 Git 平台。
- 如果没有:请继续以下步骤生成新的密钥对。
2. 生成新的 SSH 密钥对
推荐使用安全性更高且性能更好的 Ed25519 算法;如果平台不支持或系统较老,可使用传统的 RSA 算法。
方案 A:使用 Ed25519 算法(推荐)
在终端中执行以下命令:
ssh-keygen -t ed25519 -C "your_email@example.com"
方案 B:使用 RSA 算法(兼容性好)
如果需要使用 RSA,建议指定 4096 位长度以确保安全:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
参数说明:
- t:指定密钥类型(ed25519 或 rsa)。
- b:指定密钥位数(仅 RSA 需要,推荐 4096)。
- C:添加注释,通常填写你的邮箱地址,便于识别密钥归属。
生成过程中的交互提示:
- Enter file in which to save the key: 直接按 回车 使用默认路径(通常为 ~/.ssh/id_ed25519 或 ~/.ssh/id_rsa)。
- Enter passphrase: 设置私钥密码。
- 推荐设置: 输入一个强密码并确认。这样即使私钥文件泄露,攻击者也无法直接使用。
- 可选留空: 如果希望完全免交互(如用于自动化脚本),可直接按两次回车留空,但安全性会降低。
3. 获取并复制公钥
密钥生成后,你需要将公钥(.pub 文件)的内容复制到 Git 平台。
查看公钥内容:
# 如果你生成的是 ed25519 密钥
cat ~/.ssh/id_ed25519.pub
# 如果你生成的是 rsa 密钥
cat ~/.ssh/id_rsa.pub
4. 将公钥添加到 Git 平台
假如添加到了 github.com
5. 测试连接
在终端执行:
# 假如密钥被添加到了github.com
ssh -T git@github.com
成功响应示例:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.