MacOS 让终端命令使用全局代理

1. 环境

系统:OS X 10.11.6 (15G31)
代理软件:shadowsocks

2. 背景

国内开发者要上外国的网站或下载一些网站上的代码时,一般都是通过代理,但应该有不少人遇到过这种情况:浏览器能打开目标网站,但在终端上却无法 ping 通或下载代码失败。这是因为你设置了代理,网页和软件能通过代理进行访问,但终端却没有走代理路径导致的。

本文则是介绍如何让终端走代理路径来访问目标网站并下载代码,使用的代理软件是 shadowsocks。关于 shadowsocks 的安装与使用本文并不涉及,可用搜索引擎进行查找安装。

3. 安装

  1. 安装 Proxychains :使用 Terminal 运行以下命令
    brew install proxychains-ng
  2. 查看 shadowsocks 本地端口号(端口号默认是 1080)。打开 ~/.ShadowsocksX/gfwlist.js 文件

    查看端口号
  3. 设置 Proxychains 安装目录下的 proxychains.conf 文件
    1. 打开 proxychains.conf 文件所在位置,在我电脑上为 /usr/local/Cellar/proxychains-ng/4.11/etc/proxychains.conf
    2. 打开 proxychains.conf 文件,并在 [ProxyList] 下面添加 socks5 127.0.0.1 1080(如果 [ProxyList] 下面有其他的内容,则将其删掉或注释掉),1080 即为 shadowsocks 的本地端口号。

  4. 如果使用的 OS X 系统 是 10.11 以下,则跳过这一步,直接进入第 5 步。由于 OS X 的新版本引入了一个新机制 SIP (System Integrity Protection),即使 Root 权限也不能对一些二进制进行修改,这些二进制是在 /System,/bin,/sbin,/usr (except /usr/local) 中的。这就影响了 proxychains 的作用范围,不在上述目录中的二进制可以使用 proxychains,而在其中的就不行了。从目前的资料有来,有以下两种解决方法

    4.1. 把所有命令都放在~/bin里,把~/bin放在路径里

    4.2. 关闭 SIP
    4.2.1. 重启电脑;
    4.2.2. 在重启的界面上按住 Command 键和 R 键进入 recovery mode
    4.2.3. 左上角通用工具选择终端;
    4.2.4. 在终端上分别运行:csrutil disablereboot
    4.2.5. 等电脑重启进入桌面后,继续第 5 步。

  5. 在要使用代理的命令前面加上 proxychains4,即可使其命令走代理途径。比如正常情况下运行 curl https://www.twitter.com/,那么让其走代理途径则是 proxychains4 curl https://www.twitter.com/,其他命令同理类推。

4. 参考

  1. Mac下的各种科学开发配置
  2. 如何在OS X 10.11的Terminal中使用shadowsocks
  3. 命令行工具下使用Shadowsocks
  4. Not working on OS X 10.11 due to SIP

 

文/牵线小丑(简书作者)
原文链接:http://www.jianshu.com/p/bee7c63c3d50

评论 在此处输入想要评论的文本。

Copied title and URL