Git SSH配置需密码的代理
最近给 Git 配置代理,发现给 SSH 配置有认证的代理并不容易,没找到直接的教程,其实由于 ssh://
形式的 Git 链接会走 SSH 协议,问题已经转化为 ssh 如何配置有认证的代理,这样就好搜到相关资料了,为方便后来者检索,本文对 git 的代理配置做个总结。
Git 支持 http 和 ssh 两种传输协议,前者就是 git clone https://github.com/xxx/xxx
这种形式的 URL,后者是 git clone [email protected]/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:[email protected]:port
git config --global https.proxy http://proxyUsername:[email protected]:port
对于有认证的代理,要设置认证方法为 basic
。
git config --global http.proxyAuthMethod 'basic'
否则会报 fatal: unable to access 'https://xxx': Proxy CONNECT aborted
的错误。
共有 0 条评论