Git配置SSH Key到GitHub的详细教程

Git配置SSH Key到GitHub的详细教程

前言

在往 github 上 push 项目的时候,如果走 https 的方式,每次都需要输入账号密码,非常麻烦。而采用 ssh 的方式,就不再需要输入,只需要在 github 自己账号下配置一个 ssh key 即可。

配置 SSH

1. 检查是否已有 SSH Key

在 Git Bash(Windows) 、终端(Linux/macOS) 运行以下命令:

bash 复制代码
# 查看是否已存在密钥
ls -al ~/.ssh

如果看到以下文件,说明已有密钥:

  • id_rsa(私钥)
  • id_rsa.pub(公钥)

可以跳到第4步直接添加到 GitHub

2. 生成新的 SSH Key(如果没有)

bash 复制代码
# 生成新的 SSH 密钥
ssh-keygen -t rsa -b 4096 -C "[这里输入你的邮箱]"

参数说明

  • -t rsa:使用 RSA 算法
  • -b 4096:密钥长度 4096 位(比默认 2048 位更安全)
  • -C "邮箱":密钥的注释标识(通常是你的 GitHub 绑定邮箱)

系统会询问以下问题

  1. Enter file in which to save the key(~/.ssh/id_rsa)(默认回车)

    • 直接回车,使用默认路径(推荐)
    • 如果已有密钥,可以换个名字,如 id_rsa_github
  2. Enter passphrase (输入密码,可以为空)

    建议直接回车(否则每次使用SSH都要输入密码)

生成成功后,会在 ~/.ssh/ 目录下创建两个文件:

bash 复制代码
~/.ssh/id_rsa      # 私钥(不要分享)
~/.ssh/id_rsa.pub  # 公钥(需要添加到 GitHub/GitLab)

执行过程

bash 复制代码
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: [再次输入密码或回车]

3. 启动 SSH Agent 并添加密钥

bash 复制代码
# 启动 SSH agent(用于管理密钥)
eval "$(ssh-agent -s)"
# 应该显示:Agent pid XXXX

# 添加私钥到 SSH agent
ssh-add ~/.ssh/id_rsa
# 如果你的私钥文件名不是 id_rsa,请修改为实际名称
# 如果设置了密码,会提示输入

# 验证密钥已添加
ssh-add -l
# 应该显示你的密钥信息

4. 复制公钥到剪贴板

bash 复制代码
# 查看公钥内容
cat ~/.ssh/id_rsa.pub

复制公钥的方法:

  • Windows Git Bash:

    bash 复制代码
    clip < ~/.ssh/id_rsa.pub
  • macOS:

    bash 复制代码
    pbcopy < ~/.ssh/id_rsa.pub
  • 手动复制

5. 添加公钥到 GitHub

进入 Settings 设置

6. 测试 SSH 连接

bash 复制代码
# 测试连接 GitHub
ssh -T git@github.com

成功提示:

bash 复制代码
Hi yourName! You've successfully authenticated, but GitHub does not provide shell access.

7. 设置 Git 使用 SSH 方式拉取代码

默认情况下,Git 可能还在使用 HTTPS,需要手动改为 SSH。

设置全局 Git 远程 URL 方式:

bash 复制代码
git config --global url."git@github.com:".insteadOf "https://github.com/"

设置成功后,即可不需要账号密码 clone 和 push 代码

注意之后在clone仓库的时候要使用ssh的url,而不是https

验证原理

以下内容出自Github配置ssh key的步骤(大白话+包含原理解释)

SSH登录安全性由非对称加密保证,产生密钥时,一次产生两个密钥,一个公钥,一个私钥,在 git 中一般命名为id_rsa.pub, id_rsa。

那么如何使用生成的一个私钥一个公钥进行验证呢?

本地生成一个密钥对,其中公钥放到远程主机,私钥保存在本地

当本地主机需要登录远程主机时,本地主机向远程主机发送一个登录请求,远程收到消息后,随机生成一个字符串并用公钥加密,发回给本地。本地拿到该字符串,用存放在本地的私钥进行解密,再次发送到远程,远程比对该解密后的字符串与源字符串是否等同,如果等同则认证成功。

通俗解释!!

重点来了: 一定要知道 ssh key 的配置是针对每台主机的! 比如我在某台主机上操作 git 和我的远程仓库,想要 push 时不输入账号密码,走 ssh 协议,就需要配置 ssh key,放上去的 key 是当前主机的 ssh 公钥。那么如果我换了一台其他主机,想要实现无密登录,也就需要重新配置。

  1. 为什么要配?
    配了才能实现 push 代码的时候不需要反复输入自己的 github 账号密码,更方便
  2. 每使用一台主机都要配?
    是的,每使用一台新主机进行 git 远程操作,想要实现无密,都需要配置。并不是说每个账号配一次就够了,而是每一台主机都需要配。
  3. 配了为啥就不用密码了?
    因为配置的时候是把当前主机的公钥放到了你的 github 账号下,相当于当前主机和你的账号做了一个关联,你在这台主机上已经登录了你的账号,此时此刻 github 认为是该账号主人在操作这台主机,在配置 ssh 后就信任该主机了。所以下次在使用 git 的时候即使没有登录 github,也能直接从本地 push 代码到远程了。当然这里不要混淆了,你不能随意 push 你的代码到任何仓库,你只能 push 到你自己的仓库或者其他你有权限的仓库!
相关推荐
x***B4112 小时前
Git数据分析实战
git·数据挖掘·数据分析
CoderJia程序员甲2 小时前
GitHub 热榜项目 - 日榜(2025-11-23)
python·开源·github·mcp
健康平安的活着4 小时前
gitflow的实战操作案例【经典实操】
git
卖芒果的潇洒农民5 小时前
Work Github相关
github
1***s6326 小时前
Git混合现实开发
git·mr
逛逛GitHub7 小时前
新挖掘了 3 个优质的 GitHub 项目,有点意思啊。
github
q***R3087 小时前
Git日志
git
草莓熊Lotso8 小时前
Git 本地操作进阶:版本回退、撤销修改与文件删除全攻略
java·javascript·c++·人工智能·git·python·网络协议