首页  |  Linux  |  C/C++  |  网络编程  |  Python   |  Algorithm  |  数据库  |  经验  |   人生 & 随想   |  站内搜索  |  关于

<<< previous

该文已被浏览1625

SSH端口转发的两个应用场景



关于SSH端口转发的概念,网络上有很多讲解的文章。然而我一直认为只看一些理论性的东西,而不去实际操作使用,就不能真正理解一种技术,同样,我认为只看一些SSH端口转发的理论介绍,而不去实际应用,就不能真正理解SSH端口转发。恰巧最近遇到了两个需要实际使用SSH端口转发的地方,便记录了下来,下面是对我所遇到的SSH端口转发的两个应用场景的介绍, 希望可以加深大家对SSH端口转发的理解。

注:下面的部分假设你对SSH端口转发已经有一定的了解了

场景一

场景介绍

我现在所在的学校,不知道是出于什么样的原因,每天晚上 9:00 就会断网,此时,网页打不开,ping外网也ping不通,各种需要联网的软件都无法正常使用。但是如果你在8点59分时还在下载东西,那么在9点以后,你仍然可以继续下载, 而不会被断开。

场景分析

由上面的场景描述可知,每天晚上 9:00 所谓的 "断网" 并不是真正的断网,因为如果是真正的断网,那么在网上9点之后,所有的下载应该都不会继续进行下去。由这一点可以推测,学校所谓的 "断网", 其实是在每天网上9点之后,阻断所有的新的与外网的连接,但是保留下已有的与外网的连接,这也是为什么9点以后,已有的下载可以继续进行下去的原因。

解决方案

注:下面的解决方法假设你有一台自己的VPS

由于学校的这种行为严重影响到了自己的学习,因此有必要找一个方法来应对学校的这种 "断网" 行为。这个方法就是 SSH端口动态转发, 利用学校所谓的 "断网" 会保留已有的连接这一特点,可以在每天晚上在学校断网之前,通过SSH端口动态转发,建立一条SSH隧道,这样在晚上9点之后,虽然所有与外网的新连接会被阻断,但是这条SSH隧道会被保留下来,借助这条SSH隧道,我们便可以正常访问一些网页来学习了。

建立SSH端口动态转发的命令如下:

$ ssh -D <port> username@Server_IP        

上面的命令中, port 为本地的监听端口,usernameServer_IP 为服务器端(VPS端)的用户名和主机IP.

接下来在浏览器中配置 Socks 代理,代理的主机名填写 127.0.0.1, 端口号填写上述命令中的 port, 保存设置,之后你就可以通过SSH端口动态转发来浏览网页了。


场景二

场景介绍

我所在的学校,不只会在晚上9点之后进行 "断网",偶尔也会在白天里断网,此时 "断网" 的特点是所有的网页都无法打开,但是 ping 外网的主机却可以 ping 通,其他的一些联网软件也可以正常使用。

场景分析

由上面的场景描述可知,上面场景中所谓的 "断网" 也不是真正的断网,因为除了网页打不开外,其他的联网软件都可以使用,ping外网的主机也可以ping通,因此可以推测学校可能对防火墙做了一些设置,使得发送到外网的目的端口号为80和443的的数据包被丢弃掉。

解决方案

注:下面的解决方法假设你有一台自己的VPS

对于这个问题,同样可以使用场景一中所用到的解决方案,即使用SSH端口动态转发,建立一条SSH隧道,使得HTTP请求和响应数据包都通过SSH隧道来传输,这样在浏览器浏览网页时,发送到外网的数据包的目的端口号就不是80了,而是SSH隧道的VPS端的端口号,这样就绕过了学校对网页浏览的限制。

此处关于SSH端口动态转发的设置与场景一中的设置相同,因此不再赘述。

相关阅读

这篇文章假设你已经对SSH端口转发有一定的了解, 如果你对SSH的端口转发不了解,可以查看下面这篇文章:
实战SSH端口转发

如果你对于如何在浏览器中配置Socks代理也不是很清楚,可以查看下面的在火狐浏览器中设置代理的方法, 其他的浏览器设置代理的方法大致相同:
火狐代理服务器设置

结束语

我个人应该是一个实用主义的人,对于一种技术,我总想在实际生活中可以有用武之地,这也是我不太喜欢学校所讲授的纯理论性课程的原因。在这篇文章中,我介绍了我最近所遇到的两个可以实际应用到SSH端口转发的场景,以及使用SSH端口动态转发解决问题的具体方法。希望这篇文章中对这两个应用场景的介绍,可以加深你对SSH端口转发的理解。



一如既往,如果你对文章中的内容有任何疑问,或者是发现文章中有任何错误,都可以通过下面的地址发邮件告诉我.
E-mail: contact@TechForGeek.info