有些时候由于连不上Git服务器而我们又需要推送代码,这时就需要设定Git代理服务器。
1,http和https代理
如果说使用的是项目http或者https地址,就配置http与https代理即可,输入以下命令:
git config --global http.proxy "http://地址:端口"
git config --global https.proxy "http://地址:端口"
例如设定一个本地代理:
git config --global http.proxy "http://127.0.0.1:1080"
git config --global https.proxy "http://127.0.0.1:1080"
这样使用git clone/push/pull所有http或者https地址项目都会走代理。
还可以使用下面命令取消代理设置:
git config --global --unset http.proxy
git config --global --unset https.proxy
2,SSH代理设定
如果说项目使用的ssh地址,那么就需要配置ssh代理。
(1) 安装前置工具
SSH代理通常借助其它命令完成,因此我们需要先安装一些工具。
在Windows上使用的是connect命令进行代理,在Git Bash中自带了,如果你使用的是Git Bash则无需再手动安装。
不过对于Msys2环境的Git,则需要安装一下:
pacman -S ucrt64/mingw-w64-ucrt-x86_64-connect
此外,还需要把ucrt64环境所在目录(通常是你的Msys2安装目录\ucrt64\bin)加入到系统Path环境变量中,这时connect命令才可以使用。
对于Linux操作系统,通常使用ncat命令完成代理,通过下列命令安装:
sudo apt install ncat
(2) 进行配置
我们需要编辑ssh的配置文件,位于用户文件夹下的.ssh文件夹下。
- Windows ssh配置文件路径:
C:\Users\你的用户名\.ssh\config - Linux ssh配置文件路径:
/home/你的用户名/.ssh/config
使用文本编辑器打开配置文件config加入下列配置:
Windows系统:
ProxyCommand connect -S 代理地址:端口 %h %p
Linux系统:
ProxyCommand ncat --proxy 代理地址:端口 --proxy-type socks5 %h %p
如果说.ssh文件夹不存在或者config文件不存在就自己创建一个。
配置好了,通过ssh协议操作就会走代理了。
上面是配置全局走代理,事实上一般只需要为指定网址配置代理,例如只为Github配置代理,就在配置文件加入:
Windows系统:
Host github.com
ProxyCommand connect -S 代理地址:端口 %h %p
Linux系统:
Host github.com
ProxyCommand ncat --proxy 代理地址:端口 --proxy-type socks5 %h %p
Host后面接的就是指定要走代理的地址,可以接多个地址例如:
Windows系统:
Host github.com gitlab.com
ProxyCommand connect -S 代理地址:端口 %h %p
Linux系统:
Host github.com gitlab.com
ProxyCommand ncat --proxy 代理地址:端口 --proxy-type socks5 %h %p
可见多个地址使用空格隔开放在Host后面即可,这个例子就是同时指定ssh访问github.com和gitlab.com时走代理。
3,ssh代理连通性测试
例如配置了Github的ssh代理后,我们可以通过下列命令测试连通性:
ssh -T git@github.com
若输出下列消息则说明配置成功且能够通过代理访问:
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.
反之,如果输出下列消息:
kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535
这就说明配置错误,或者当前代理服务器节点存在问题或不支持ssh协议,重新配置或者更换代理服务器再试。