Skip to content

配置 git 代理连接 GitHub

发布于 at 16:18

使用 git 时我们肯定离不开 GitHub,但国内网络环境连接到 GitHub 总会出现时好时不好的情况,本文记录一下如何配置 git 代理(http 和 ssh)来解决这个问题。

下面主要是记录解决的步骤,如果你想要了解更详细的信息,可以参阅这篇文章:https://hellodk.cn/post/975

本文也是对之前学习 git 时做的笔记的补充 > krdw-git-note#SSH-Key

区分 http 和 ssh 代理

git 的代理有两种,一种是走 https 协议的 http 代理,一种是走 ssh 协议的 ssh 代理。

一般使用 http 代理的情况就是在 clone 仓库并使用 https 时,比如

git clone https://github.com/KrDw9ec4/KrDw9ec4.github.io.git

使用 ssh 代理的情况就比较多了,

在 clone 仓库并使用 ssh 时,比如

git clone [email protected]:KrDw9ec4/KrDw9ec4.github.io.git

本地仓库与 GitHub 远程仓库进行推送和拉取时,比如

git push origin main

设置 http 代理

其实 git 的远程仓库不只有 GitHub,你也可以在自己的服务器上创建一个 git 仓库,所以我们设置 http 代理最好只对 GitHub 生效即可。

git config --global http.https://github.com.proxy http://127.0.0.1:7890

你可以前往 ~/.gitconfig 查看是否配置成功:

[http "https://github.com"]
	proxy = http://127.0.0.1:7890

也可以自己使用 http 来 clone 一个仓库试试。

设置 SSH 代理

打开 ~/.ssh/config 你就可以看到你的 SSH 配置,我们要做的就是在这里添加类似下面的一段配置:

Host ssh.github.com
  Hostname ssh.github.com
  IdentityFile "C:\Users\krdw\.ssh\id_rsa"
  User git
  Port 443
  ProxyCommand "C:\Program Files\Git\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %n %p

你需要做出相应更改:

需要说明的是,这里的 Port 采用的是 443 端口,,而不是 ssh 的 22 端口,是因为大多数机场都限制了 22 端口,如果你使用 22 端口则可能会出现下面的错误:

kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535

我一开始是参照知乎上的一篇文章配置的代理,他就是使用了 22 端口导致我一直报这个错误。

设置完成之后,你可以使用下面的命令来查看是否成功:

ssh -T [email protected]

也可以自己使用 ssh 来 clone 一个仓库试试。