switchyomega + ssh tunnel配置原理

最近同事给推荐了一个chrome插件特别好用,但是我起初并不知道原理,于是研究了一下,延伸了好多知识,和大家分享一下,不足之处,欢迎指正。

chrome插件:SwitchyOmega

它是用来切换和管理不同代理的chrome插件,可以轻松快捷地管理和切换多个代理设置。具体使用方法自己百度,网上好多教程。这里只做概念分析,理解原理。

那这个插件是怎么做到的呢,这就不得不提一下socks代理协议。

我们常用的网络代理协议,除了http之外,还有一个就是socks,他的特点就是通常不限制端口,所谓来者不拒,在你配置完之后,你所配置的主机的所有访问都会转给配置的指定端口代理。

ssh

刚开始我对SSH的理解就是远程连接,然而SSH隧道并非那么简单,利用SSH隧道可以干很多事,就是其中之一。

SSH动态绑定

ssh绑定有三种形式: local、remote以及dynamic,现在要说的就是ssh的dynamic,即动态绑定
这是SSH的基本原理:利用SSH动态绑定的功能。那么何谓SSH动态绑定呢?动态绑定是SSH端口转发功能的一种形式。

  • 首先,墙内的客户机跟墙外的代理服务器,建立好SSH连接,并设定动态绑定
    此时墙内客户机上的SSH会监听本地的一个端口7001
  • 客户机上的程序,将对www.youtube.com:80的请求告知7001端口的SSH,SSH将此请求通过SSH加密连接发送到墙外服务器的SSH上
  • 由于建立的动态绑定,服务器会将www.youtube.com:80的请求发送给www.youtube.com上的80端口,并在收到回复后,通过原路返回给客户机的SSH,客户机的SSH返回给应用程序
  • 在这里SSH客户端已经不仅仅是个客户端了,它同时打开了7001端口侦听本机应用程序的请求。这是SSH跟传统用法最大的区别。而服务端的SSH也不仅仅是处理客户端的请求,而是将请求转发到对应的主机和端口,这里的动态二字体现在服务端的SSH的转发目标是不固定的,是根据客户端的请求而定的。

那么如何让应用程序知道应该把请求发送给本机的7001端口呢?

答案就是SOCKS代理。

SSH隧道的搭建

利用putty连接服务器,填写服务器ip、用户名、密码,然后配置一下隧道端口

最后在浏览器或者其他应用程序上设置SOCKS代理(通过switchyomega或者浏览器自带的代理设置都可以),代理指向127.0.0.1,端口7001即可

你可能感兴趣的:(前端开发)