Total Pageviews

Tuesday, 29 November 2011

How to Bypass Your Corporate Firewall Using SSH Tunneling

简短的序言:
我得到一份新的工作,但是由于ISA防火墙,我没办法远程连接(终端服务,Radmin,VNC等)我家的机器。在经过与朋友同事的讨论后,终于找到了如下的办法。没别的意思,我只是想和大家共同通过这个便于理解的图文教程来巩固一下,每个人都喜欢图文的教程。
方案前提:
1、你家里的机器已经运行了一些远程服务(什么都行),配置和设置这些比较轻松,但是仍然在本文讨论范畴之外。
2、确保你和家中那个远程服务所开的端口能正常通信(特别注意你公司的那个愚蠢的防火墙),在家中路由和防火墙上已经打开该端口。
3、你已经为了允许通过SSH连接到你的家庭网络中在路由器上打开了端口22。
4、无论你公使用何种防火墙都需要已经打开22端口以便进行SSH通信。
让我们开始吧:
首先我们在家里下载我们需要用到的辅助工具
1)Cygwin(http://cygwin.com)
2)PuTTY(http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)

(图1)
选择一个FTP服务器来下载(这里冰血亲自去重新抓了一张图 下面一段和原文的有点不同 因为原文不详细^_^)
注 意:这里我们选择好后,下一步很复杂,首先你点一下右上角的view按钮,现在显示出了详细的信息。下拉滑动杆找到open SSH Server and client programs这项,把他在New列下的标识从Skip转换为Install(这里原文是说Install的,但是我没找到,有两个安装过程,我把两个 openssh和openssl都装了)。

(图2)
现在你可以选择其他的你想安装的,当然花的时间也就更长了。

(图3)
当Cygwin安装完成后我们通过桌面的快捷方式图标启动它,现在我们将看见一个shell。
在这个shell中我们通过输入ssh-host-config来安装sshd服务。系统会自动提问你两个问题,你只需要都回答YES就可以了。完成后你将看见这样的shell提示。

(图4)
下一步是通过命令提示符启动SSH daemon服务,具体过程是:开始->运行->cmd<回车>后输入Net Start SSHD,执行后的情况如下图所示。

(图5)
Net start sshd-启动SSH服务
Net stop sshd-停止SSH服务
当服务已经启动开始运行后它将每次随计算机的启动自动启动,无须手工了。
好了,以上所有的工作都在家里完成,当然我们是在假设你家里的系统已经运行了一些远程控制服务,比如:VNC,Radmin,终端服务等等。
回到公司要做的:
现在我们需要的是PuTTY和你的远程控制客户端。本文将使用用Radmin做示范(www.radmin.com)。
启动PuTTY,并且填写好参数把它指向你家的网络

(图6)
·输入你的公网IP地址
·端口是22
·选择SSH协议
·为你的session命名
隧道方面的设置问题:
·选择Coonection->SSH->Tunnels选项。
·在Add new forwarded port区中Source port填写你家里的远程控制服务端的监听端口(例如:Radmin的默认端口是4899,下面有图)。
·Destination是你的公网IP然后跟一个半角英文的冒号,后面再次填写你的源端口(source port),比如111.222.333.444:4899的样子。
·下面的选项按钮应保持在local。
·最后,通过点击Add(添加)按钮把刚才做的添加到当前配置。
·现在你设置的端口应该被添加到了Forwarded Ports box(你可以添加更多只要你愿意)。

(图7)
注意:现在回到session设置区并且给你的session命名并且保存你的设置。这样,我们以后就再也不需要在启动的时候重新设置了。
远程控制客户端:
1、打开你的远程控制客户端。
2、设定你使用的那个端口(Radmin默认是4899)。
3、IP设置成你的本地回传地址127.0.0.1

(图8)
连接的时候到了:
现 在我们已经做好了前期工作,可以连接了。我们现在所做的是使用SSH通过本机端口22连接到家里的22端口。一旦连接建立成功后,我们就可以同时强制我们 的Radmin通畅的进行连接了。所以,当公司的防火墙阻挡了我的4899端口请求却不阻挡22端口,我们就得逞了。为了成功的向外建立SSH连接,我们 就要得请出PuTTY。
1、启动PuTTY,双击我们事先已经设置好的那个Radmin端口映射的连接。
2、使用你的Windows帐号和密码通过PuTTY登录你的SSH连接。
3、当你的PuTTY成功建立连接后,打开你的远程控制客户端。
4、你必须已经保存了连接到127.0.0.1的连接设置。
5、打开到127.0.0.1的连接,如果一切顺利将提示你输入密码。
6、输入你的远程控制密码,现在你成功了!
来看看成功的抓图

(图9)
PuTTY连接界面

(图10)
Radmin连接界面
后记:
文章翻译完成了,小小的,短短的文章,竟然花了我一天时间。我最想说的是PuTTY其实是一款类似于端口重定向的软件,其实在公司的那一步可以使用fpipe来实现,只是估计是fpipe无法保存设置吧,而且是命令行的有点困难。

No comments:

Post a Comment