如何生成 SSH 密钥并配置到 GitHub 或 Gitee?
- 2025-12-31 09:23:00
- Git基础入门 原创
- 32
在我们动手之前,先花30秒搞清楚为什么要这么做。
简单来说,SSH 密钥提供了一种更安全、更便捷的连接方式。它由一对密钥组成:
- 私钥 (Private Key):存放在你的电脑上,绝对不能泄露给任何人。它就像你的银行卡密码。
- 公钥 (Public Key):可以放心地告诉任何人,配置在像 GitHub/Gitee 这样的平台上。它就像你的银行卡号。
当你通过 SSH 连接时,远程服务器(比如 GitHub)会用你的公钥加密一段信息,然后发给你的电脑。只有你本地的私钥才能解开它。一旦解密成功,服务器就知道“哦,这个人是可信的”,于是就允许你进行操作,全程无需密码。
核心优势就两点:
- 安全: 比密码验证安全得多,几乎不可能被暴力破解。
- 方便: 一次配置,永久有效,告别重复输入密码。
核心三步走:生成、复制、配置
整个过程可以清晰地分为三个步骤,适用于所有主流操作系统(Windows/macOS/Linux),因为我们使用的都是 Git Bash 或终端里的通用命令。
第一步:生成你的 SSH 密钥对
首先,打开你的终端。
- Windows 用户: 打开 Git Bash (安装 Git 时会自动安装)。
- macOS / Linux 用户: 打开“终端” (Terminal)。
在终端里输入以下命令,然后敲回车。
ssh-keygen -t ed25519 -C "your_email@example.com"
提示:
- -t ed25519 是指定密钥的加密算法。Ed25519 是目前最推荐的算法,比传统的 RSA 更安全、性能更好。
- -C "your_email@example.com" 是给这个密钥加一个注释,通常用你的邮箱地址,方便识别。记得换成你自己的邮箱。
执行命令后,你会看到几行提示:
> Generating public/private ed25519 key pair. > Enter file in which to save the key (/c/Users/YourName/.ssh/id_ed25519):
这里是问你密钥文件保存在哪里。 直接按回车键使用默认路径就好,不要修改。
接着,它会提示你输入一个密码(passphrase):
> Enter passphrase (empty for no passphrase): > Enter same passphrase again:
这个密码是用来保护你的私钥文件的。如果设置了,每次使用这个密钥时都需要输入它。为了方便, 你可以直接按两次回车键,表示不设置密码。
如果一切顺利,你会看到这样的成功信息,代表你的密钥对已经生成好了。
Your identification has been saved in /c/Users/YourName/.ssh/id_ed25519. Your public key has been saved in /c/Users/YourName/.ssh/id_ed25519.pub. The key fingerprint is: SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your_email@example.com The key's randomart image is: +--[ED25519 256]--+ | . | | + . | | . B . | | . * + | | . = S . | | . = = o . | | . . B o.o . | | . . +E=.o | | .o.o=o+. | +----[SHA256]-----+
好了,密钥已经躺在你的电脑里了。
第二步:找到并复制你的公钥
密钥生成后,我们需要拿到 公钥(.pub 后缀的文件)的内容。
在终端里输入以下命令,它会直接把公钥内容打印在屏幕上:
cat ~/.ssh/id_ed25519.pub
你会看到一长串以 ssh-ed25519 开头、以你的邮箱结尾的字符。这就是你的公钥。
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEvTj/qY1bY8Sg8gzaR0R0R0R0R0R0R0R0R0R0R0R0 your_email@example.com
完整地选中并复制这一整串内容。
⚠️ 重要警告: 千万不要搞错了文件!id_ed25519 是私钥,id_ed25519.pub 才是公钥。泄露私钥等于把你的电脑权限交给了别人。
第三步:将公钥添加到 GitHub 或 Gitee
现在,我们只差最后一步了。
配置到 GitHub
- 登录你的 GitHub 账户。
- 点击右上角的头像,选择 Settings。
- 在左侧菜单栏,找到并点击 SSH and GPG keys。
- 点击右上角的绿色按钮 New SSH key。
- 在 Title 栏里,给这个密钥起一个你能记住的名字,比如 My MacBook Pro 或 Work PC。
- 在 Key 文本框里, 粘贴你刚刚复制的公钥内容。
- 点击 Add SSH key。
<!-- Placeholder for a visual guide -->
配置到 Gitee (码云)
流程几乎一模一样:
- 登录你的 Gitee 账户。
- 点击右上角的头像,选择 设置。
- 在左侧菜单栏,找到并点击 SSH公钥。
- 在 标题 栏里,同样起一个好记的名字。
- 在 公钥 文本框里, 粘贴你的公钥内容。
- 点击 确定。
<!-- Placeholder for a visual guide -->
最后一步:验证配置是否成功
为了确保一切正常工作,我们来做一个简单的连接测试。
测试 GitHub 连接
在终端输入:
ssh -T git@github.com
第一次连接时,你可能会看到一个警告,问你是否信任这个主机: Are you sure you want to continue connecting (yes/no/[fingerprint])? 输入 yes 然后回车。
如果配置成功,你会看到这样的欢迎信息: Hi YourUsername! You've successfully authenticated, but GitHub does not provide shell access. 看到 successfully authenticated 就说明大功告成!
测试 Gitee 连接
在终端输入:
ssh -T git@gitee.com
同样,输入 yes 并回车。成功后会看到: Hi YourUsername! You've successfully authenticated, but Gitee.com does not provide shell access.
现在,当你再使用 git clone, git pull, git push 等命令操作 git@github.com:... 或 git@gitee.com:... 格式的仓库地址时,就再也不需要输入密码了。
FAQ:关于 SSH 密钥的常见疑问
Q1: Ed25519 和 RSA 我该用哪个?
首选 Ed25519。 它是更现代、更安全的算法。除非你需要兼容非常古老的系统,否则没有理由不使用它。
| 特性 | Ed25519 | RSA |
|---|---|---|
| 安全性 | 更高 | 相对较低 (需要更长的密钥) |
| 性能 | 更快 | 较慢 |
| 密钥长度 | 更短 | 更长 |
| 兼容性 | 现代系统 | 几乎所有系统 |
Q2: 我可以为多个 GitHub/Gitee 账户配置不同的 SSH 密钥吗?
完全可以。 这是一个常见的进阶需求(比如公司一个账户,自己一个账户)。你需要:
- 生成不同名称的密钥对,例如 ssh-keygen -t ed25519 -C "work@email.com" -f ~/.ssh/id_ed25519_work。
- 在 ~/.ssh/ 目录下创建一个名为 config 的文件。
- 在 config 文件中为不同的主机配置使用不同的密钥文件。
Q3: 出现 "Permission denied (publickey)" 错误怎么办?
这是最常见的错误,通常有几个原因:
- 公钥没配对: 检查你添加到 GitHub/Gitee 的公钥内容是否和你本地 ~/.ssh/id_ed25519.pub 文件里的完全一致,有没有多余的空格或换行。
- 私钥权限问题: 在 macOS/Linux 下,确保 ~/.ssh 目录和私钥文件的权限正确。通常私钥文件权限应为 600。
- 使用了错误的仓库地址: 确保你 clone 或 push 的是 SSH 格式的地址 (git@...),而不是 HTTPS 格式的 (https://...)。
Q4: 私钥 (id_ed25519) 和公钥 (id_ed25519.pub) 有什么区别?哪个能给别人?
再次强调:
- 公钥 (.pub 文件) 是公开的,可以安全地分享和配置到任何服务器上。
- 私钥 (没有后缀的文件) 是你的身份凭证, 绝对、绝对、绝对不能泄露给任何人或上传到任何地方。
| 联系人: | 郑女士 |
|---|---|
| 电话: | 13792883250 |
| Email: | zhengqiaoyin@cnezsoft.com |
