昨天发现github上拉不动代码,晚上便整了一台代理服务器。由于以前一直没玩过服务器,所以这次觉得很新鲜很有趣,不妨谈谈我这次脑中的模型(玄学)
远程设置代理服务器端
首先我们可以选购一台国外服务器,除去那些托管的服务器硬件配置,供应商商会提供给我们机器的控制权:
- 服务器Ip:如果把服务器比作一间房子,那么服务器Ip就是门牌号。
- 管理员账户和密码:这间房子的超级管理员账户,一般为root。
通过ssh(可以简单的理解成“无线USB工具”),以超级管理员用户访问国外的服务器
ssh root@45.32.71.28
输入服务器密码,也就是用钥匙开们,因为是新建的实例,许多端口并没有提供服务,所以可以看到房间里有很多空窗户。那么我们在空荡荡的房间里安装一个8hadow8ock8应用,并将它设置在8989号窗户上。从网络端打开窗户便可以访问该房间的应用,所以我们接着给这个服务端应用设置密码,和传输加密模式。
至此,我们的远程服务器端代理便设置完成,接下来进行本地客户端代理设置。
本地安装代理客户端
我们在本地安装代理客户端8hadow8ock8-qt5,并将它设置在本地房间127.0.0.1的1080号窗口。
客户端和浏览器都可以通过http(s)协议,来访问服务器端口的应用,但这里的8hadow8ock8-qt5客户端与远程服务端应用建立的通信协议只能是socks5,可以猜出来ssh、http、socks5是有所区别的(后面我得去google下)
我们对客户端进行配置
- 服务器地址:ip地址,用来找到相应服务器
- 服务器端口:服务器上应用所在窗口
- 密钥:从网络中打开服务器应用的钥匙
- 加密方式:从本地到网络中的传输加密,从网络到本地的传输解密
- 超时:连接时间,超时则从网络中回到本地
- 本地服务器类型:选择本地应用与本地8hadow8ock8-qt5客户端的通信协议
代理上网
为git应用设置代理
直接连接
- git应用通过http(s)SSH请求github
- github传代码于本地
为git应用的http(s)动作设置socks5代理客户端
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'
- 通过对8hadow8ock8-qt5客户端的socks5请求,git应用的http(s)动作被代理
- 8hadow8ock8-qt5客户端socks5请求远程服务器应用
- 远程服务器应用请求github
- github通过中转传代码于git应用。
为git应用的http(s)动作设置http代理客户端
git config --global http.proxy 'http://127.0.0.1:1080'
git config --global https.proxy 'http://127.0.0.1:1080'
- 通过对代理客户端的http请求,git应用的http(s)动作被代理
- 代理客户端请求远程服务器应用
- 远程服务器应用请求github
- github通过中转传代码于git应用
为git应用的SSH动作设置socks5代理客户端
# 这里必须是 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
ProxyCommand nc -v -x 127.0.0.1:1080 %h %p
为git应用的SSH动作设置http代理客户端
# 这里必须是 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
ProxyCommand socat - PROXY:127.0.0.1:%h:%p,proxyport=1080
为chrome应用设置代理
通过SwitchyOmega插件可以更好的实验研究本地chrome应用与本地代理客户端的通信,现在很多代理客户端可以支持不同代理协议的应用,也有很多应用可以支持不同代理协议的客户端,总之现在的兼容性做得非常不错,因此我们理解这种代理流程时千万不要误解这种兼容性封装。