命令行如何走代理
上一篇我介绍了如何使用Stunnel作为客户端,GoProxy-VPS作为服务端进行全局代理。但所谓的全局代理,并不针对命令行,比如Mac下的Terminal或者Windows下的CMD。很多情况下,命令行的程序更需要更新。
下面我来介绍一下,在Mac以及Windows环境下如何给命令行设置全局代理。
Mac Terminal
首先,我找了一下Mac下如何安装Stunnel的教程,比较简单的就是使用Homebrew安装,只需要一条命令
1 | brew install stunnel |
Mac下的Stunnel是没有图形化界面的,不像Windows。但问题是我的Homebrew版本太低的缘故,下载的Stunnel链接已经不存在了,这就很头痛了。而且Homebrew本身又一直更新失败。但是仔细观察会发现,Stunnel官网有源文件包,可以手动编译安装。下载最新的版本,我的是5.49版本。
下载完成后,解压然后执行命令安装
1 | cd stunnel-5.49 |
安装完成后,需要创建stunnel.conf
配置文件
1 | cp /usr/local/etc/stunnel/stunnel.conf-sample /usr/local/etc/stunnel/stunnel.conf |
接下来就是新增你自己的配置,比如我的配置
1 | ; HTTP(S) proxy authenticated with a client certificate |
其中,client=yes
代表启用客户端代理,accept=127.0.0.1:8080
表示客户端代理的网址和端口,connect=192.168.80.156:443
是我的GoProxy-VPS服务运行的网址和端口,verifyChain=yes
表示客户端需要验证服务端的证书,CAfile = /usr/local/etc/stunnel/server.pem
是我服务端的证书。
当然把verifyChain
以及CAfile
都注释了的话,客户端就无须验证服务端证书这一步了,始终认为是通过的。而浏览器就无法跳过这一步,因为对浏览器而言,客户端验证服务器证书,是TLS握手中必须的一步。
配置完成之后,运行Stunnel进程
1 | sudo stunnel |
至此,Mac下的Stunnel客户端就算运行成功了。那么如何配置Terminal走Stunnel代理呢?
很简单,只需要在Terminal中输入两行命令,即可实现代理
1 | export http_proxy=http://user:pass@ip:port |
如果GoProxy-VPS设置了PAM验证机制,命令行设置代理的时候,就需要带上用户名和密码。其中user
是用户名,pass
是密码,ip:port
是Stunnel客户端配置中的accept
参数的值,比如我的就是127.0.0.1:8080
。
如果密码带有!@
等字符,需要使用转义符号\
。下面就可以走代理更新你的命令行程序了。
Windows CMD
Windows下安装Stunnel客户端太容易了,配置和Mac下的配置一样,无须更改。主要说说CMD如何实现走代理。其实很简单,打开CMD
1 | set http_proxy=http://user:pass@ip:port |
设置一下就好了,是不是超级简单。