Git SSH配置需密码的代理

最近给 Git 配置代理,发现给 SSH 配置有认证的代理并不容易,没找到直接的教程,其实由于 ssh:// 形式的 Git 链接会走 SSH 协议,问题已经转化为 ssh 如何配置有认证的代理,这样就好搜到相关资料了,为方便后来者检索,本文对 git 的代理配置做个总结。

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

1. Git SSH 协议配置代理

有认证的代理

一般我们用 nc 命令来做代理转发,但是它不能静默完成认证操作,所以有认证的代理需要使用 ncat 命令。需要安装 ncat 工具,Debian、Ubuntu 直接 apt install nmap 即可,windows 也有对应版本。

~/.ssh/config

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

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

无认证的代理

Linux – HTTP Proxy
~/.ssh/config

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

Linux – Socks5 Proxy
~/.ssh/config

Host github.com
  ProxyCommand nc -X 5 -x proxy.server.com:port %h %p

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

Windows – HTTP Proxy
~/.ssh/config

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

Windows – Socks5 Proxy

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

2. Git HTTP/HTTPS 协议配置代理

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

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

git config --global http.proxyAuthMethod 'basic'

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

共有 0 条评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注