场景
公司Git服务器只能在内网访问,在公司以外的地方无法直接访问远程Git仓库,但公司的跳板机外网可访问,于是自然想到利用跳板机做Socks代理来使用Git(由于某些不可描述的原因无法访问Github或者网速很慢的朋友,也可以参照此文配置Socks代理来访问)。如下图所示:
图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一下仓库,就能成功更新代码啦!
备注
老版本的nc代理参数可能是-x,新版本是--proxy系列,具体可以参考man nc;
上述方案适用于Git走SSH协议;
Git Server端需要提前将客户机的公钥配置好,否则会鉴权失败。如果是Gitlab,登陆到后台即可配置。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。