当前位置: 首页 > Linux

通过Socks代理场景使用Git

时间:2023-04-06 02:13:15 Linux

公司的Git服务器只能在内网访问,公司外不能直接访问远程Git仓库,但是公司的跳板机可以从外网访问,所以很自然的想到跳板机作为Socks代理来使用Git(由于一些不可描述的原因,无法访问Github或者网速较慢的朋友也可以参考这篇文章配置Socks代理来访问)。如下图所示:图1中的步骤一般我都是在自己的VPS(CentOS7)上写代码。第一步是使用ssh-gen生成当前用户公钥。如果有可以跳过的公钥,将公钥的内容追加到跳板机的~/.ssh/authorized_keys文件末尾。这一步是为下一步动态端口转发做准备(这样ssh到跳板机就不需要输入密码了)。第二步,在本地建立动态端口转发:ssh-f-N-D1080springboarduser@springboardhostok,此时本地的1080端口就变成了Sock4/Socks5代理。具体ssh参数请参考manssh第二步。为了让Git调用ssh使用这个Socks4代理,我们需要配置~/.ssh/config:HostspringboardhostProxyCommandnc--proxy127.0.0.1:1080--proxy-typesocks4%h%p为配置ProxyCommand的含义,请参考manssh_config确定。这时候我们就可以gitclone仓库,更新代码成功了!备注老版本的nc代理参数可能是-x,新版本是--proxy系列。详情请参考mannc;以上方案适用于使用SSH协议的Git;Git服务器需要提前配置好客户端的公钥,否则Authentication会失败。如果是Gitlab,登录后台进行配置。