SSH端口转发可以提供一条加密隧道,该隧道可以用于穿透防火墙,防止窃听。但隧道两侧仍是明文。
1. LocalForward
应用场景:
你的PC机需要访问邮箱pop.163.com 端口110,但你PC机不能直接连接到邮箱(不通internet),而局域网内一台服务器MyServer(需要是支持ssh服务的linux,unix机器)可以访问到internet。
- 若你的PC机是linux,或unix机器
root@MyPC: ssh -p 22 -L 9999:pop.163.com:110 root@MyServer
root@Myserver's password: --此处要输入MyServer的root用户密码
Last login: Sun Jan 10 23:42:21 2010 from 192.168.1.101
其中-p 参数是Myserver ssh连接的端口,默认是22; -L是LocalForward(9999是本地PC端口)。
本地连接:(这是通过命令行连接到163邮箱,你也可以通过linux下的Evolution软件连接邮箱进行收发邮件,它类似于outlook)
root@MyPC: telnet 127.0.0.1 9999
+OK Welcome to coremail Mail Pop3 Server (163coms[d0a67bcd290bb19fb165d92968971e20s])
USER ablo_zhou
+OK core mail
PASS xxxxx
QUIT
+OK core mail
- 若你的PC机是Windows机器
先装一个SecureCRT,然后添加一个ssh到MyServer, 并添加一个"端口转发",如图:
然后连接到MyServer中,
root@MyServer: ssh -b MyServer -L 7777:pop.163.com:110 root@MyServer
root@Myserver's password: --此处要输入MyServer的root用户密码
Last login: Sun Jan 10 23:42:21 2010 from 192.168.1.1
-L是LocalForward(7777是MyServer中的一个空闲端口号,建议也配成9999)。
然后在你的Windows PC机上,就可以使用outlook或telnet命令连到127.0.0.1,端口号是9999进行收取163上的邮件了。
2. RemoteForward
应用场景:你周末需要加班,但你不想去公司干活,想在家里干。而很多资源如subversion都只有公司内网才能访问到。防火墙不允许你从家里直接连公司。VPN又在周末出了问题,需维护。
可以在下班前,先配置工作机器,远程连接到你家里的电脑,采用远程转发RemoteForward.
工作机器配置:
lainee@work$: vi ~/.ssh/config
Host home-with-tunnel
Hostname 204.225.288.29
RemoteForward 2222:localhost:22
User laineeboo
远程连接到家里:
lainee@work$: ssh home-with-tunnel
laineeboo@204.225.228.29's password: ********
远程连接到家里后,为防止防火墙对不活动连接关闭,做一个定期的ping, 这样就会有回显,连接才不会断。
laineeboo@home$ ping -i 5 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=0.1 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=255 time=0.2 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=255 time=0.2 ms
...
回家后,可以连接
laineboo@home$: ssh -p 2222 lainee@localhost
lainee@localhost's password: ********
lainee@work$:
成功