Git 配置 SSH Key 连接 GitHub 详细教程
本文详细介绍了如何在 Git 中配置 SSH Key 以连接 GitHub,避免每次推送代码时输入账号密码。步骤包括检查现有密钥、生成新密钥对、启动 SSH Agent、复制公钥至剪贴板、在 GitHub 设置中添加公钥以及测试连接。此外还说明了如何全局配置 Git 使用 SSH 协议拉取代码,并解释了 SSH 非对称加密验证的基本原理。每台主机需单独配置 SSH Key 以实现免密登录。

本文详细介绍了如何在 Git 中配置 SSH Key 以连接 GitHub,避免每次推送代码时输入账号密码。步骤包括检查现有密钥、生成新密钥对、启动 SSH Agent、复制公钥至剪贴板、在 GitHub 设置中添加公钥以及测试连接。此外还说明了如何全局配置 Git 使用 SSH 协议拉取代码,并解释了 SSH 非对称加密验证的基本原理。每台主机需单独配置 SSH Key 以实现免密登录。

在往 github 上 push 项目的时候,如果走 https 的方式,每次都需要输入账号密码,非常麻烦。而采用 ssh 的方式,就不再需要输入,只需要在 github 自己账号下配置一个 ssh key 即可。
在 Git Bash(Windows) 、终端(Linux/macOS) 运行以下命令:
# 查看是否已存在密钥
ls -al ~/.ssh
如果看到以下文件,说明已有密钥:
可以跳到第 4 步直接添加到 GitHub
# 生成新的 SSH 密钥
ssh-keygen -t rsa -b 4096 -C "[这里输入你的邮箱]"
参数说明:
-t rsa:使用 RSA 算法-b 4096:密钥长度 4096 位(比默认 2048 位更安全)-C "邮箱":密钥的注释标识(通常是你的 GitHub 绑定邮箱)系统会询问以下问题:
Enter file in which to save the key(~/.ssh/id_rsa)(默认回车)
生成成功后,会在 ~/.ssh/ 目录下创建两个文件:
~/.ssh/id_rsa # 私钥(不要分享)
~/.ssh/id_rsa.pub # 公钥(需要添加到 GitHub/GitLab)
执行过程:
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/yaoheng/.ssh/id_rsa): [直接按 Enter]
Enter passphrase (empty for no passphrase): [输入密码或直接回车]
Enter same passphrase again: [再次输入密码或回车]
# 启动 SSH agent(用于管理密钥)
eval "$(ssh-agent -s)"
# 应该显示:Agent pid XXXX
# 添加私钥到 SSH agent
ssh-add ~/.ssh/id_rsa
# 如果你的私钥文件名不是 id_rsa,请修改为实际名称
# 如果设置了密码,会提示输入
# 验证密钥已添加
ssh-add -l
# 应该显示你的密钥信息
# 查看公钥内容
cat ~/.ssh/id_rsa.pub
复制公钥的方法:
macOS:
pbcopy < ~/.ssh/id_rsa.pub
Windows Git Bash:
clip < ~/.ssh/id_rsa.pub
进入 Settings 设置
# 测试连接 GitHub
ssh -T [email protected]
成功提示:
Hi yourName! You've successfully authenticated, but GitHub does not provide shell access.
默认情况下,Git 可能还在使用 HTTPS,需要手动改为 SSH。
设置全局 Git 远程 URL 方式:
git config --global url."[email protected]:".insteadOf "https://github.com/"
设置成功后,即可不需要账号密码 clone 和 push 代码
注意之后在 clone 仓库的时候要使用 ssh 的 url,而不是 https
SSH 登录安全性由非对称加密保证,产生密钥时,一次产生两个密钥,一个公钥,一个私钥,在 git 中一般命名为 id_rsa.pub, id_rsa。
那么如何使用生成的一个私钥一个公钥进行验证呢?
本地生成一个密钥对,其中公钥放到远程主机,私钥保存在本地 当本地主机需要登录远程主机时,本地主机向远程主机发送一个登录请求,远程收到消息后,随机生成一个字符串并用公钥加密,发回给本地。本地拿到该字符串,用存放在本地的私钥进行解密,再次发送到远程,远程比对该解密后的字符串与源字符串是否等同,如果等同则认证成功。
重点来了: 一定要知道 ssh key 的配置是针对每台主机的! 比如我在某台主机上操作 git 和我的远程仓库,想要 push 时不输入账号密码,走 ssh 协议,就需要配置 ssh key,放上去的 key 是当前主机的 ssh 公钥。那么如果我换了一台其他主机,想要实现无密登录,也就需要重新配置。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online