Github push 代理设置

说实话出这步都是被逼的,尼玛 github 又被强了,真心不知道说啥了,push 代码都不行,所以只能寻找代理的方式

一、配置

1.1 需求

首先需求就是能自由 push / pull github 仓库里的代码,所以直接设置代理可以正常拉去代码即可,参考文章 这里

1.2 准备

首先准备好 socket5 的代理,有很多种实现 socket5 的方式,因为我本地是 Mac 平台,就直接用了默认的终端 ssh 来实现 socket5 的代理

ssh -D 1080 -N -f root@X.X.X.X

这里的要求就是你这台远端的机器是墙外的机器,最终通过他来访问 github ,这台机器只要开启了 ssh server,有账户密码即可

可以利用 netstat -an | grep 1080 查看本地是否启动了这个端口,如果成功启用,那么本地的 socket5 代理就设置好了,那么下面开始使用

1.3 使用

因为 git 本身就可以使用的协议就有: http、ssh、git,所以使用代理的方式各有不同,下面分别列举

1.3.1 HTTP 协议

# 使用 http.conf
git config http.config socks5://127.0.0.1:1080

# 也可以使用环境变量
export HTTPS_PROXY=socks5://127.0.0.1:1080

# git 的配置可以是全局的,也可以根据不同的仓库进行配置,环境变量只能全局使用,否则就需要在每次使用 git 的时候用 env
env HTTPS_PROXY=socks5://127.0.0.1:1080 git pull

如果需要根据不同的 remote 使用不同的代理,可以使用 remote.<name>.proxy

1.3.2 SSH 协议

修改 ssh 的 client 配置文件 .ssh/config

Host github.com
Port 22
ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p
ServerAliveInterval 10

这样连接 github 的 ssh 都会使用 socket 代理,ssh 的配置可以参考 man ssh_config ,nc 命令的使用可以参考 man nc

SSH 协议的代理可以是全局的(去掉 Host 那行就行了),也可以针对某个网站,但不能针对某个仓库配置

1.3.3 GIT 协议

1.给 GIT 协议配置代理需要写一个脚本,比如脚本的名字叫: git_proxy

#!/bin/sh
nc -X 5 -x 127.0.0.1:1080 "$@"

2.然后使用 core.gitproxy 进行配置:

git config core.gitproxy /path/to/git_proxy

3.它可以配成全局的,也可以配成各个仓库自己的,还可以使用:

git config core.gitproxy '/path/to/git_proxy for github.com'

到了这里就可以正常 push / pull 了,下面单独就 Mac 环境下另一工具说明

二、MacOS 终端代理

除了上面的 ssh -D 实现 socket5 代理以外,可以使用 tsocks 为任意程序使用 socks 代理,参考文章 codelife

三、tsocks 代理

1.安装 tsocks, 该项目主页

$ brew tap adamv/alt
$ brew install tsocks

2.配置 tsocks
打开配置文件/usr/local/etc/tsocks.conf

local = 192.168.0.0/255.255.255.0
server = 127.0.0.1
server_type = 5
server_port = 8080

3.开始使用

和上面一样,http 代理和 https 代理配置方法也相同

# http 和 https 代理
$ export http_proxy='http://YOUR_USERNAME:YOUR_PASSWORD@PROXY_IP:PROXY_PORT/'
$ export https_proxy='http://YOUR_USERNAME:YOUR_PASSWORD@PROXY_IP:PROXY_PORT/'

# 取消代理
$ unset http_proxy
$ unset https_proxy

这边用一个实例进行,配置方式也基本如同上面,让 Mac 下的终端里的 http 走 tsock 提供的 socket5 代理

$ export http_proxy='http://localhost:1080'
$ export https_proxy='http://localhost:1080'
$ tsocks /Applications/Textual.app/Contents/MacOS/Textual

更多阅读