git push 疑难解决:使用更稳定SSH密钥替代https连接GitHub并推送代码

在日常开发中,git push时经常会出现各种让人摸不着头绪的问题,尤其是使用代理时,本人通过结合各种资料的建议,饱受各种奇怪问题的折磨,发现使用SSH协议替代https连接GitHub能够防止大部分奇怪bug的产生,本文将详细记录从生成ED25519密钥对到成功推送代码到GitHub仓库的完整过程(以本人的仓库和实际过程为例)

一、生成ED25519密钥对

ED25519是一种现代的椭圆曲线加密算法,相比传统的RSA密钥,它在安全性和性能上都有优势。我们首先需要生成一对ED25519密钥(私钥和公钥)。

操作命令:(双引号中替换为自己实际的邮箱)

ssh-keygen -t ed25519 -C "m5201314202201@163.com"

过程解析:

  1. 执行命令后,系统会提示选择密钥保存路径,默认路径为 C:\Users\lenovo/.ssh/id_ed25519(Windows系统),直接按回车使用默认路径即可。
  2. 系统会自动创建 .ssh 目录,用于存储密钥文件。
  3. 接下来会提示设置密钥密码(passphrase):
    • 若希望每次使用密钥时都验证密码,可输入密码并确认。
    • 若希望免密码使用,直接按两次回车跳过即可。
  4. 成功生成后,会显示密钥的指纹信息和随机艺术图案,同时提示私钥(id_ed25519)和公钥(id_ed25519.pub)的保存路径。

二、将本地仓库关联到GitHub的SSH地址

生成密钥后,需要将本地Git仓库与GitHub远程仓库通过SSH协议关联,

打开github->setting->SSH and GPG Keys->New SSH key,

新建密钥后接着在git bash以下操作:

操作命令:(替换为自己仓库实际的名称)

git remote set-url origin git@github.com:1024freedom/Qt_radar.git

作用说明:

  • git remote set-url 用于修改远程仓库的地址。
  • git@github.com:1024freedom/Qt_radar.git 是GitHub仓库的SSH地址

三、验证SSH连接是否成功

在推送代码前,建议先验证本地与GitHub的SSH连接是否正常,确保密钥配置正确。

操作命令:

ssh -T git@github.com

过程解析:

  1. 首次连接时,系统会提示无法确认 github.com 的真实性,并显示其公钥指纹
The authenticity of host 'github.com (20.205.243.166)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
  1. 输入 yes 确认信任该主机,系统会将GitHub的公钥信息保存到 ~/.ssh/known_hosts 文件中,后续连接无需再次验证。
  2. 若生成密钥时设置了密码,此时会提示输入密钥密码;若未设置,直接跳过。
  3. 成功连接后,会显示 Hi 1024freedom! You've successfully authenticated... 提示,表明SSH密钥验证通过。

四、推送本地代码到GitHub仓库

验证连接成功后,即可将本地代码推送到GitHub远程仓库。

 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐