告别 Git 密码输入:用 SSH 密钥安全连接 GitHub
如果你经常使用 GitHub 保存代码,可能已经注意到,Git 不仅支持 HTTPS 连接,还支持 SSH 连接。SSH 使用一对密钥验证身份,配置完成后,日常执行 git pull 和 git push 会更加方便。
整个过程只需要几条命令,不需要安装额外的软件(前提是系统已经提供 OpenSSH 客户端)。
一、先理解 SSH 密钥是什么
SSH 密钥采用一对相互关联的密钥:
- 私钥(Private Key): 保存在自己的电脑上,相当于个人身份凭证,不能随意分享。
- 公钥(Public Key): 可以提供给 GitHub,用于验证连接是否来自对应的私钥持有者。
可以把它理解为一把钥匙和一把锁:公钥交给 GitHub,私钥留在自己的电脑上。连接时,GitHub 可以验证你的身份,而不需要直接获取私钥。
与反复输入密码相比,SSH 密钥更适合日常开发。不过,私钥一旦泄露,仍然可能被他人滥用,因此建议为私钥设置额外的密码短语(Passphrase)。
二、检查电脑是否已经有 SSH 密钥
在生成新密钥之前,先检查是否已经存在密钥,避免意外覆盖旧文件。
打开终端,macOS、Linux 或 Git Bash 用户可以执行:
ls -al ~/.ssh
Windows PowerShell 用户可以执行:
Get-ChildItem $env:USERPROFILE\.ssh
如果看到以下文件:
id_ed25519
id_ed25519.pub
说明已经存在一对 Ed25519 密钥。
其中,不带 .pub 的是私钥,带 .pub 的是公钥。
如果已经有密钥,可以考虑继续使用,不必重复生成。如果没有,再进行下一步。
三、生成一对新的 SSH 密钥
目前,GitHub 官方文档推荐优先使用 Ed25519 算法。
在终端执行:
ssh-keygen -t ed25519 -C "your_email@example.com"
将示例邮箱替换为自己的 GitHub 注册邮箱。
接下来会出现几个提示:
第一步:选择保存位置。
Enter file in which to save the key:
如果是第一次创建,可以直接按 Enter,使用默认位置。
第二步:设置密码短语。
Enter passphrase:
建议设置一个自己能够记住的强密码短语,并再次输入确认。
完成后,系统会生成两个文件:
~/.ssh/id_ed25519
~/.ssh/id_ed25519.pub
前者是私钥,后者是公钥。
如果电脑上已经有同名密钥,不要直接确认覆盖,可以重新指定一个文件名,例如 id_ed25519_github。
四、把公钥添加到 GitHub
密钥生成后,还需要让 GitHub 认识这把公钥。
第一步:查看公钥内容。
macOS、Linux 或 Git Bash:
cat ~/.ssh/id_ed25519.pub
Windows PowerShell:
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub
复制完整输出内容,通常以 ssh-ed25519 开头。
第二步:进入 GitHub 设置。
打开 GitHub SSH 密钥设置页面,登录自己的账号。
按照下面的步骤操作:
- 点击 New SSH key。
- 在 Title 中填写设备名称,例如
My Laptop。 - Key type 选择 Authentication Key。
- 在 Key 输入框粘贴刚才复制的公钥。
- 点击 Add SSH key 完成添加。
注意:这里只能上传 .pub 公钥文件的内容,绝对不要上传不带 .pub 的私钥。
五、测试 SSH 是否配置成功
回到终端,输入:
ssh -T git@github.com
第一次连接时,可能会提示确认 GitHub 主机身份。确认主机指纹与 GitHub 官方公布的信息一致后,再接受连接。
如果配置成功,通常会看到类似下面的信息:
Hi username! You've successfully
authenticated, but GitHub does not
provide shell access.
其中 username 是你的 GitHub 用户名。
看到这段提示,说明 SSH 身份验证已经成功。最后一句不是报错,而是表示 GitHub 不提供普通 SSH 终端登录服务。
六、让现有 Git 项目使用 SSH
如果你之前通过 HTTPS 克隆项目,想改用 SSH,可以进入项目目录执行:
git remote -v
如果看到类似:
https://github.com/用户名/仓库名.git
就说明当前使用的是 HTTPS。
可以通过下面的命令修改远程地址:
git remote set-url origin git@github.com:用户名/仓库名.git
把用户名和仓库名替换成自己的实际信息。
再次执行:
git remote -v
如果地址变成 git@github.com: 开头,就说明修改成功。
以后正常执行:
git push
git pull
Git 就会通过 SSH 进行身份验证。
七、几个必须记住的安全习惯
- 私钥不要上传到 GitHub 仓库、网盘或公开聊天群。
- 公钥可以分享,但私钥必须妥善保管。
- 为私钥设置密码短语,并在需要时使用 SSH Agent 管理。
- 不同电脑建议使用不同的密钥,设备丢失时可以单独撤销对应公钥。
- 如果怀疑私钥泄露,应及时从 GitHub 账户中删除对应公钥,并重新生成密钥。
总结: SSH 密钥认证只需要配置一次,就能让 Git 与 GitHub 建立更加方便的安全连接。记住生成密钥、上传公钥、测试连接这三个步骤,下次提交代码时就不必再为重复身份验证烦恼。
- 点赞
- 收藏
- 关注作者
评论(0)