背景

由于****原因,从Github拖代码的速度抽风,于是搜索了各种配置代理方式,貌似常规搜出来的方法不支持ssh方式,最终找到一个方法,可以只是ssh方式,如下。

方法

Git 目前支持的三种协议 git://ssh://http://,其代理配置各不相同:core.gitproxy 用于 git:// 协议,http.proxy 用于 http:// 协议,ssh:// 协议的代理需要配置 ssh 的 ProxyCommand 参数。

假如代理地址为:127.0.0.1:1080

所有协议全部使用 SSH 隧道进行代理

GIT 协议的配置

建立 /path/to/socks5proxywrapper 文件,使用 https://bitbucket.org/gotoh/connect 工具进行代理的转换,各发行版一般打包为 proxy-connect 或者 connect-proxy。

#!/bin/sh
connect -S 127.0.0.1:1080 "$@"

配置 git

[core]
        gitproxy = /path/to/socks5proxywrapper

或者

export GIT_PROXY_COMMAND="/path/to/socks5proxywrapper"
SSH 协议的配置

建立 /path/to/soks5proxyssh 文件

#!/bin/sh
ssh -o ProxyCommand="/path/to/socks5proxywrapper %h %p" "$@"

配置 git 使用该 wrapper

export GIT_SSH="/path/to/socks5proxyssh“

当然也可以直接配置 ~/.ssh/configProxyCommand

HTTP 协议的配置
[http]
        #这里是因为 Git 使用 libcurl 提供 http 支持
        proxy = socks5://127.0.0.1:1080

所有协议全部使用 http 代理

在前一部分的基础上, /path/to/socks5proxywrapper 文件改为

#!/bin/sh
connect -H 127.0.0.1:1080 "$@"
HTTP 协议配置
[http]
    proxy = http://127.0.0.1:1080

针对域名启用代理

gitproxy 参数提供 * for * 结构,具体看 man git-config 的 core.gitproxy 部分。

其他方法

可以用proxychains,配置方法见:利用Proxychains在终端使用socks5/http代理,这个方法简单好用

参考文章

https://segmentfault.com/q/1010000000118837