|
|
发表于 2004-6-26 10:41:09
|
显示全部楼层
使用SSH对其它应用程序在别的TCP端口上建立的TCP/IP传输进行加密和解密,这一过程称为端口转发,其绝大多数操作都是透明的,功能非常强大。TELNET,SMTP,NNTP,IMAP和一些基于TCP的不安全协议都可变得安全,只要将其连接通过SSH转发即可。端口转发有时又叫做隧道传输。
例子:一个运行IMAP的服务器S,在家里的主机H上运行一个email程序,现在想用ssh保护IMAP连接。
$ ssh -L2001:localhost:143 S
-L 表明是本地转发,,上面这命令可完成登录到S的功能,现在的这个SSH会话同时将H的2001端口转发到S的143端口,在退出会话之前一直有效。并告知email程序使用被转发的端口,通常邮件程序连接服务器的143端口,即套接字 (S,143)。现在要令其连接本地主机H自已的2001端口,也就是套接字(localhost,2001)。创建本地转发时可以不用-L选项,而在客户端配置文件中用LocalForward关键字。
LocalForward 2001 localhost:143 ssh1 openssh
LocalForward "2001:localhost:143" ssh2
-g 选项和GatewayPorts yes/no关键字可以配置除本地主机外的机器是否能使用本地的端口转发功能。出于安全问题,该禁止这个功能。
远程转发端口与本地转发几乎完全相同,只是方向相反。此时服务器在本地,转发连接由远程主机发起。假设你已登录进服务器S。则
$ ssh -R2001:localhost:143 H
-R代表远程转发。命令执行后,一条从远程主机H的2001端口到服务器S的143端口的安全隧道就建立起来了。H上的任何程序都可以通过连接(localhost,2001)来使用此安全隧道。而在客户端配置文件中用RemoteForward关键字.
RemoteForward 2001 S:143 ssh openssh
RemoteForward "2001:S:143" ssh2
$ ssh -o ClearAllForwardings=yes server.example.com 阻止第二条命令建立隧道
本地转发与远程转发
在本地转发中,应用程序客户端与监听端同SSH客户端在一起,应用程序服务器与连接端同SSH服务器在一起。
在远程转发中,应用程序客户端与监听端同SSH服务器在一起,应用程序服务器与连接端同SSH客户端在一起。 |
|