连接 GitHub:SSH ☀️ HTTPS 🌦
- Published on
问题
这几天从本地终端向 GitHub 远程仓库 push 总是失败,不会报错,就是行进到 95% 前后就停滞不前。一直想当然地以为是文件过大,还想着是不是仓库容量要超限了,所以 push 不动了。终于刚才去搜了一下,发现使用 SSH 协议就能解决问题。
诊断
命令中加入-- verbose
会返回更详细的 push 进展状况
然后看到返回 POST git-receive-pack (chunked)
网友说这是 Git 的一个 bug,当使用 HTTPS 协议发送的文件大过某个阈值后就会采用 chunked 编码,然后就看到一种解决方法是用 SSH 协议发送。
解决方法
官方指南在此
使用 github 绑定邮箱新建 SSH keys,参考这里
ssh-keygen -t ed25519 -C "your_email@example.com"
返回询问保存文件直接回车用默认
设置输入密钥密码
将新生成的密钥添加到 ssh-agent
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519
打开密钥保存文件,复制里面的内容
nano ~/.ssh/id_ed25519.pub
可以把终端全屏显示,密钥共 80 个字符,以 ssh-rsa 开始,以绑定的邮箱结尾,终端内一行显示不完全也不会换行显示,一不小心复制的内容就不完整,最开始就因为这个在 GitHub 中报错密钥无效了。
在 GitHub 个人设置里新建 SSH 密钥,将上一步复制的内容完整贴进去,参考这里
测试与 GitHub 的连接,参考这里
ssh -T git@github.com
检查返回的 RSA 密钥指纹与这里的是否一致,一致输入 yes
最后,添加某远程仓库对应的 ssh-url
git remote set-url origin git@github.com:username/your_repo_gitname.git
其实很早之前 summerscar 看到我每次通过 HTTPS 输入用户名和密码 push 就跟我说过换用 SSH,可是因为懒一直没有研究,终于改了。