有时,git需要通过代理才可以访问到目标服务器,例如github访问速度比较慢,或者工作网络不允许直接访问外网等等,因此这一篇记录一下git代理设置。
传输协议
首先明确一下git clone仓库时常用的几种连接协议,大致以下三种:
- https(http),例如:git clone https://github.com/yumefx/test.git
- ssh,例如:git clone ssh://github.com/yumefx/test.git
- git,例如:git clone git://github.com/yumefx/test.git
其中第一种方式可以改成git clone http://github.com/yumefx/test.git,由于自带ssl加密的https协议相比明文传输的http更安全,因此现在主流的git服务器都设置了http跳转,即使用http连接,会自动跳转到https进行实际clone操作。
在命令行看到的效果是:
git clone http://github.com/yumefx/test.git // Cloning into 'test' ... // warning: redirecting to https://github.com/yumefx/test.git/ // remote:Enumerating objects:2,done // ...
虽然http会自动跳转到https,但是在git客户端看来依然是不同的两个协议,因此设置代理时需要分别设置。
下面是具体设置方式。
https(http)代理设置
http代理
git config --global http.proxy http://127.0.0.1:8080
设置完后,在 ~/.gitconfig 这个文件中会找到对应配置
[http] proxy = http://127.0.0.1:8080
不使用命令的话,直接创建或修改这个文件也可以。
取消代理
git config --global --unset http.proxy
HTTPS设置
跟HTTP代理是一样的,只不过config对于的key是https.proxy。
#设置https代理 git config --global https.proxy http://127.0.0.1:8080 #取消https代理 git config --global --unset https.proxy
当然,如果用socks协议,只需要把http://或者https://替换为socks5://即可
git config --global https.proxy socks5://127.0.0.1:8080
ssh协议代理
linux中,在~/.ssh/config文件中配置如下,如果没有安装nc的话,需要用yum(apt-get)安装好才能使用。
Host github.com HostName github.com User git Port 22 ProxyCommand nc --proxy 127.0.0.1:8080 %h %p IdentityFile ~/.ssh/id_rsa
windows平台的配置文件为C:\Users\administrator\.ssh\config,配置如下:
Host github.com User git Port 22 ProxyCommand "C:/Program Files/Git/mingw64/bin/connect" -H 127.0.0.1:8080 %h %p IdentityFile "C:\Users\user.ssh\id_rsa" TCPKeepAlive yes IdentitiesOnly yes
两个路径根据自己的git安装目录和私钥位置自行修改。
ssh远程登录代理
同理,使用ssh登录远程linux服务器时,同样也可以使用。
ssh -o ProxyCommand='nc --proxy 127.0.0.1:8080 %h %p' yumefx@192.168.1.15 -p 22
或者也保存到配置文件中,然后就可以直接ssh yumefx.com登录。
Host yumefx.com HostName 192.168.1.15 User yumefx Port 22 ProxyCommand nc --proxy 127.0.0.1:8080 %h %p
git协议代理
跟https的代理设置方式相似,config的key为core.gitproxy。
#设置git协议代理 git config --global core.gitproxy http://127.0.0.1:8080 #取消git协议代理 git config --global --unset core.gitproxy
世界上只有一种英雄主义,
就是看清生活的真相之后依然热爱生活。
——《米开朗基罗》
评论
还没有任何评论,你来说两句吧!