通过Socks代理使用Git

场景

公司Git服务器只能在内网访问,在公司以外的地方无法直接访问远程Git仓库,但公司的跳板机外网可访问,于是自然想到利用跳板机做Socks代理来使用Git(由于某些不可描述的原因无法访问Github或者网速很慢的朋友,也可以参照此文配置Socks代理来访问)。如下图所示:

通过Socks代理使用Git

图1

步骤

一般情况下我都在我自己的VPS(CentOS 7)上写Code。第一步,先用ssh-gen生成当前用户公钥,如果已有公钥可跳过,将公钥内容,追加到跳板机的~/.ssh/authorized_keys文件末尾,这一步是为下一步的动态端口转发做准备(这样ssh到跳板机无需输入密码)

第二步,先在本地建立一个动态端口转发:

ssh -f -N -D 1080 跳板机用户@跳板机host

ok,此时,本地的1080端口就成了一个Sock4/Socks5代理。

具体ssh参数用途请参考man ssh

第二步,为了让Git调用ssh走这个Socks4代理,我们需要配置~/.ssh/config:

Host 跳板机host
        ProxyCommand nc --proxy 127.0.0.1:1080 --proxy-type socks4 %h %p

具体ProxyCommand的配置意义请参考man ssh_config

OK,这时候我们再git clone一下仓库,就能成功更新代码啦!

备注

  1. 老版本的nc代理参数可能是-x,新版本是--proxy系列,具体可以参考man nc;

  2. 上述方案适用于Git走SSH协议;

  3. Git Server端需要提前将客户机的公钥配置好,否则会鉴权失败。如果是Gitlab,登陆到后台即可配置。

相关推荐