Git/SSH配置系统代理

今年8月初,Gitee出现部分用户私有仓库故障。时至今日,仍有部分仓库无法恢复。从此以后,我决定用回GitHub。

giteeIsDown

但国内GitHub基本处于不可用的状态,所以需要配置一下代理。

HTTP代理

Git在拉取以http/https开头的链接时走的是HTTP代理。把相关配置写到~/.gitconfig里,之后所有的访问http仓库的git命令都会走这个代理。

我本机的Clash代理是在127.0.0.1:7890,所以这么写:

1
2
3
4
[http]
proxy= http://127.0.0.1:7890
[https]
proxy= https://127.0.0.1:7890

SSH代理

Git在拉取以ssh开头的链接时使用的是SSH协议。这时候上面的HTTP代理配置不起作用。需要把相关配置写到~/.ssh/config里:

1
2
3
4
Host github.com
Hostname github.com
Port 22
Proxycommand ncat --proxy-type socks5 --proxy 127.0.0.1:7890 %h %p

配置完成后可以敲ssh git@github.com试试看。看到如下提示,则说明ssh可以正常连接GitHub。

1
Hi <你的用户名>! You've successfully authenticated, but GitHub does not provide shell access.

后记

如何看待码云(gitee)大面积故障? - 知乎

2023年1月2日,我再打开Gitee的时候,这些仓库已经变成空仓库了,一个commit也没有。

这给了我一个启发。Git设计的初衷就是分布式。每个机器都有一份自己的代码仓库。代码托管平台也只是这个网络中的一个公共节点。所以显然不应该把托管平台视为唯一的存储节点。


Git/SSH配置系统代理
https://yalandhong.github.io/2022/11/09/shell/git-ssh-proxy/
作者
Yaland Hong
发布于
2022年11月9日
许可协议