给终端也插个翅膀 - XIN.

给终端也插个翅膀

  in   tech with  1  comment

我们在 ss 客户端配置好之后,会发现即使是全局模式,终端下部分命令也无法正常使用。因为在终端下不支持 socks5 代理,只支持http代理,这就很尴尬了。wget、curl、git、brew等命令行工具都会变得很慢。

首先我们要确定我们的客户端本地代理的端口。点击飞机图标,高级设置,即可看到 socks5 代理端口。

然后在终端下输入

export http_proxy='http://127.0.0.1:1087'
export https_proxy='http://127.0.0.1:1087'

把socks5代理转为http代理给命令行终端使用。

想要关闭的时候输入

unset http_proxy
unset https_proxy

但是这样的话仅对当前窗口生效,如果关闭终端窗口,功能就会失效。如果再次打开,就需要重新输入,这样不太方便,我们借助 alias 来让这个过程更方便一些。

执行vim ~/.bash_profile,在后面加上

alias ss-on='export http_proxy=127.0.0.1:1087;export https_proxy=$http_proxy'
alias ss-off='unset http_proxy;unset https_proxy'

之后执行source ~/.bash_profile 让配置生效。使用 curl ip.cn进行测试

这样我们像开启的时候输入ss-on,关闭的时候输入ss-off,即可。

配置完发现虽然使用其他命令可以使用,但是 git 还是很慢,搜索一下发现,git还要单独配置。

git config --local http.proxy 'socks5://127.0.0.1:1087'
git config --local https.proxy 'socks5://127.0.0.1:1087'

这样会把 git 全局加上代理,但是如果我们还使用了国内的 git 服务的话,就比较慢。我们需要单独给国外的 git 设置。

git config --global http.https://github.com.proxy socks5://127.0.0.1:1086;
git config --global https.https://github.com.proxy socks5://127.0.0.1:1086

把这两条命令和取消的命令也加到我们之前设置的别名里。

alias ss-on='export http_proxy=127.0.0.1:1087;export https_proxy=$http_proxy;git config --global http.https://github.com.proxy socks5://127.0.0.1:1086;git config --global https.https://github.com.proxy socks5://127.0.0.1:1086'
alias ss-off='unset http_proxy;unset https_proxy;git config --global --unset http.https://github.com.proxy;git config --global --unset https.https://github.com.proxy'

上面设置的 HTTP 代理对这种方式 clone 代码是没有影响的,也就是并不会加速,SSH 的代理需要单独设置,其实这个跟 Git 的关系已经不是很大,我们需要改的,是SSH 的配置。在用户目录下建立如下文件 ~/.ssh/config,对 GitHub 的域名做单独的处理

    # 这里必须是 github.com,因为这个跟我们 clone 代码时的链接有关
Host github.com
   # 如果用默认端口,这里是 github.com,如果想用443端口,这里就是 ssh.github.com详见 https://help.github.com/articles/using-ssh-over-the-https-port/
   HostName github.com
   User git
   # 如果是 HTTP 代理,把下面这行取消注释,并把 proxyport 改成自己的 http 代理的端口
   # ProxyCommand socat - PROXY:127.0.0.1:%h:%p,proxyport=6667
   # 如果是 socks5 代理,则把下面这行取消注释,并把 6666 改成自己 socks5 代理的端口
   # ProxyCommand nc -v -x 127.0.0.1:6666 %h %p

这样就比较完美了。

Responses
  1. 哇撒。。。。。真是酷毙了。

    Reply