出于众所周知的原因,我们经常需要通过代理来连接到github.com
.
在浏览器中使用代理我们已经很熟悉了。但是在Linux命令行中,有时不是那么顺利。
git
通常有两种方式链接远程仓库:ssh
和http
如果在您的git仓库中查看远程仓库:
> git remote -v
origin [email protected]:example/example.git (fetch)
origin [email protected]:example/example.git (push)
而非:
https://github.com/example/example.git
,那么您将通过ssh连接到github.com
。
此时,若如以下方式直接在git中设置http代理,将无益于git push
git pull
等命令:
#git config --global http.proxy http://your_proxy_url
#git config --global --unset http.proxy
#git -c http.proxy=http://server:port push
因为git push
git pull
时将通过ssh连接。
当然,可以修改git remote
来解决此问题。
或者,修改ssh
的配置:
vim .ssh/config
:
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/your_private_key
ProxyCommand nc -x your_proxy_url:your_proxy_port %h %p
修改后会立刻生效。
此时将通过socks5
代理连接至github.com
。
或者,通过http:
ProxyCommand corkscrew your_proxy_url your_proxy_port %h %p
注意,在ProxyCommand nc -x your_proxy_url:your_proxy_port %h %p
命令中,使用了netcat
的nc
命令。请根据您的发行版自行安装netcat
。
在ArcLinux
中,有extra/gnu-netcat
和extra/openbsd-netcat
,请使用后者。