Locations of visitors to this page

Tuesday, August 19, 2008

ssh tunnel - ssh 隧道

---------- Forwarded message ----------
From: XIE WEN-MFK346 <wenxie at motorola.com>
Date: 2008/8/19
Subject: ssh 隧道 ssh tunnel
To: xiewenxiewen at gmail.com


ssh 隧道tunnel,也叫端口转发port forwarding
现举例说明使用ssh隧道实现端口转发,通信信息加密,socks代理服务器,突破防火墙

用法1. 通过不安全网络,加密通信内容,防止被窃听
比如,通过Internet互联网,我想访问一台服务器(mgt.s3lab.mot.com)的邮件服务,然而stmp邮件协议是不安全的,传输的内容有可能被其它人窃取
所以我要在我的机器和服务器之间建立起一条加密通道
图1
       --------
      |internet|
me ---|--------|---> mail server
 :25  |        |        :25
       --------

运行
plink s3op@mgt.s3lab.mot.com -L 25:localhost:25 -N

s3op@mgt.s3lab.mot.com 是ssh登录的用户名和地址
-L 表示Local port forwarding 本地端口转发
25:localhost:25 表示将我的pc机的25端口转发到服务器(mgt.s3lab.mot.com)上的localhost:25这个端口
-N 表示不需要交互操作,也就是说登录ssh后不启动shell
这样,访问本机的25端口就等于访问mgt服务器上的邮件服务了,而且是经过加密的

试发一封邮件给root,运行:
telnet localhost 25
ehlo helo
mail from:xiewen@earth.com
rcpt to:root
data
.
quit

发送成功



用法2. 穿过防火墙,访问防火墙后面的内网上的服务

比如,因为防火墙限制,只有MGT服务器对外提供ssh登录,无法直接访问防火墙后的内网的其它机器
但我想访问内网oracle数据库

运行
plink s3op@mgt.s3lab.mot.com -L 9901:QA-DB-1:1521 -L 9902:DEV-DB-1:1521 -N

将本机9901转发到内网QA-DB-1上oracle监听器端口1521,9902转发到DEV-DB-1的1521
图2
        firewall
            |
            |
me ---------|-----MGT------> QA-DB-1 :1521
      :9901 |       \
      :9902 |        -------> DEV-DB-1 :1521
            |

我就可以很方便的从本机直接登录内网数据库了
sqlplus system/manager@localhost:9901/screen3


sqlplus system/manager@localhost:9902/screen3



用法3: 穿过防火墙,让内网机器访问我的服务

前面举的例子的都是Local port forwarding本地端口转发,Remote port forwarding和它正好相反,是将远端端口转发到本地
比如,我在本机建立了一个http服务器,提供了文件共享服务

想从内网的访问到我共享的文件
运行
plink s3op@mgt.s3lab.mot.com -R 9080:localhost:80 -N

将mgt上的9080转发到本机的localhost:80上
图3
      firewall
         |
me <-----|-------- mgt <------- QA-DB-1
     :80 |        :9080

在内网mgt上,就可以访问共享文件了
wget http://localhost:9080/D17090GC30_ppt/index.ppt


要让内网其它机器也能访问,还要打开ssh的GatewayPorts参数
重启sshd后台服务进程,使修改的参数生效


从内网其它机器也能访问了



用法4. 建立SOCKS代理服务器
比如,我想从公司访问http://www.playboy.com
,可公司代理做了限制,不能访问


机房里有一台机器可以访问互联网,向外访问似乎没有限制,于是我打算将这台机器作为代理服务器
运行
plink s3op@mgt.s3lab.mot.com -D 1080 -N

-D 表示dynamic port forwarding, 将ssh作为SOCKS代理服务器,在本机监听1080端口
图4
     firewall
         |
         |                   --------
me ------|---- mgt -------> |internet|
   :1080 |                   --------
         |
然后我修改了firefox的网络连接设置,使用SOCKS代理服务器,再访问playboy

成功了!


用法5. 综合应用
综合运用远程+动态端口转发,突破公司防火墙,使用bittorrent,edonkey等p2p软件下载盗版软件、最新大片
没有条件,所以就不演示了




Xie wen(谢文)
Network & Operations,
Mobile Software Solutions (MDB)
MOTOROLA Inc.
No. 108 Jian Guo Road, Chao Yang District, Beijing
100022 P. R. China
e-mail wenxie at motorola.com



-fin-

No comments:

Website Analytics

Followers