Git 使用代理

最近 Git 配置代理,发现对于有认证的代理,想要 Git SSH 也用上代理却遇到好几次报错,结合网上查询和一些文档零零散散的也算是解决了,总结一下如下。

Git 常见的支持 http 和 ssh 两种模式,前者就是 git clone https://github.com/xxx/xxx 这种形式的 URL,后者是 git clone git@xxx.xxx.com/xxx.git 这种形式。由于是两种不同的协议,因此要分协议配置。

Git HTTP 配置代理

对于有认证的代理,首先要设置认证方法为 basic

git config --global http.proxyAuthMethod 'basic'

否则会报 fatal: unable to access 'https://xxx': Proxy CONNECT aborted 的错误。

接下来使用 git 命令让全局使用代理:

git config --global http.proxy http://proxyUsername:proxyPassword@proxy.server.com:port
git config --global https.proxy http://proxyUsername:proxyPassword@proxy.server.com:port

Git SSH 配置代理

Git SSH 的代理配置需要写在 ~/.ssh/config 中。需要结合 nc 命令(Windows 下 connect 命令)才能完成。由于 nc 命令不能静默完成认证操作,所以有认证的代理还需要用 ncat 命令。

无认证的代理
修改 ~/.ssh/config,添加如下内容。

Linux

Host *
  ProxyCommand nc -X connect -x proxy.server.com:port %h %p

Windows

Windows 可以使用 Git for Windows安装目录下的 connect 命令调用代理。

Host *
  ProxyCommand D:/Git/mingw64/bin/connect.exe -H proxy.server.com:port %h %p

有认证的代理

首先安装 ncat 工具。Debian、Ubuntu 直接 apt install nmap 即可。

Host *
  ProxyCommand ncat --proxy proxy.server.com:port --proxy-type http --proxy-auth proxyUsername:proxyPassword %h %p

记得将代理的密码和用户名修改,配置完就可以愉快的使用代理了~

参考

共有 0 条评论

发表评论

电子邮件地址不会被公开。