配置终端走代理,Git 走代理

之前写过一个文章,关于终端走代理的,记录 Mac 下终端走代理的方法,当时借助了一些第三方软件或者第三方包,实际使用起来还是稍稍麻烦,比如用那个 Proxifier 每次都需要去打开,不是特别方便.

今天在向 Github push 的时候,总是连接失败,然后去网上搜了一下,做一下整理.下面的这些方案算是比较完美的了,使用下来,非常方便.

第一部分-关于 git 的代理

向我平时用 git 的时候,都是选择 SSH 协议进行 PULL PUSH 等操作的,那么这个时候,你用下面的这个命令可能就会遇到 git 不走代理的情况

export https_proxy=http://127.0.0.1:7890;export http_proxy=http://127.0.0.1:7890;export all_proxy=socks5://127.0.0.1:7891

解决办法

1
2
3
4
5
#进入 ssh 配置目录
cd ~/.ssh
##编辑 config 文件,如果没有那就新建一个 config 文件
touch config
vi config

然后添加如下内容

1
2
3
4
5
6
Host *
ProxyCommand nc -X 5 -x localhost:7891 %h %p%
##解释一下
##第一行代表所有的 ssh 的主机
##第二行代表让所有的 ssh 的主机在连接的时候,通过你本地的端口为 7891 的 socks5 代理去连接,一般来讲,本地的 socks5 都是由翻墙工具提供,
##诸如 Surge ClashX 或者 Ssr,所以,7891这个端口需要换成对应的服务端口即可

然后保存一下,以后不管是在用 git 进行 push 和 pull 操作还是 ssh 连接服务器的时候,均可获得畅快体验,为什么不呢?


第二部分-其他代理

在执行一些非 ssh 协议的命令,比如 http(s) 协议的 curl 等等,我们也想走代理,这个时候怎么办呢?

拿我电脑举例子来讲,我的终端用的是 oh my zsh, 那么打开 zsh 的配置文件 vi ~/.zshrc 在里面添加如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
export https_proxy=http://127.0.0.1:7890
export http_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7891
##上面的三行命令表示,每次新建一个终端会话时,默认让终端去走代理,这样就不需要每次都复制拷贝一下了,很方便,同时,代理程序去智能分流(国内 IP 直连,国外走代理),避免了连接国内 IP 地址时“绕远”.


alias setproxy="export https_proxy=http://127.0.0.1:7890;export http_proxy=http://127.0.0.1:7890;export all_proxy=socks5://127.0.0.1:7891;echo \"Set proxy successfully\" "
alias unsetproxy="unset http_proxy;unset https_proxy;unset all_proxy;echo \"Unset proxy successfully\" "
alias ipcn="curl myip.ipip.net"
alias ip="curl ip.sb"


## 上面这几个 alias 是自定义的命令
## unsetproxy 取消代理
## setproxy 设置代理
## ip & ipcn 查看 IP