作者:吴阿亭(http://www.linuxforum.net)
一。简介:
大多数人知道SSH是用来替代R命令集,是用于加密的远程登录,文件传输,甚至加密的FTP(SSH2内置), 因此SSH成为使用极广的服务之一,不仅如此,SSH还有另一项非常有用的功能,就是它的端口转发隧道功能,利用此功能,让一些不安全的服务象POP3,SMTP,FTP,LDAP等等通过SSH的加密隧道传输,然后,既然这些服务本身是不安全的,密码和内容是明文传送的,现在其它中间媒介也没无监听了。
二。图示:
SSH的加密隧道保护的只是中间传输的安全性,使得任何通常的嗅探工具软件无法获取发送内容。如下图: 假设客户机和服务器都运行Linux,且以POP3为例。
C (pop3 server: S) S _______ ________ | | | | | |________POP3___________ "gt;| | |_____| |______| (图一:正常的POP3)
(图一:正常的POP3)
C (pop3 server:C) S (pop3 client: S) _______ ________ | | | | | |--------SSH连接---------"gt;| | |_____| |______|
(图二:SSH隧道后的POP3)
如图一: 正常的POP3连接是客户C向服务器S进行连接,C的设置是POP3服务器为S。 如图二: 用SSH隧道的话,客户C设置pop3服务器为自己(localhost),然后设置SSH加密隧道,如果设置在同样的端口110听取C的请求,则对C来说,pop3服务器是自己本身,端口也是110 对S来说,看到的pop3请求地址不是来自C,而也是自己本身,因为有了SSH隧道。
三。SSH隧道设置
解释如下: -C 使用压缩功能,是可选的,加快速度。
-P 用一个非特权端口进行出去的连接。
-f 一旦SSH完成认证并建立port forwarding,则转入后台运行。
sshaccount 客户C在服务器S上的SSH连接帐号
-L 110:S:110 转发C对本地端口110的连接到远程服务器S的110端口。也可以用高端端口(普通用户使用,因为普通用户不能在低于1024的端口上建立SSH隧道)如果用高端端口,如:-L 1110:S:110,这样任何用户都可建立这种加密隧道。
sleep 7200 一般用于script,必须给一个命令,我们给一个sleep等待空 命令,这里为2小时,你可以设为更长用于保持整个连接过程, 如 sleep 100000000 。
四。检验
设置后你就可以在客户C上用 # telnet localhost 110 命令而连到 S 上收取email,而整个过程也被加密。
五。其它常见问题:
看文章荟萃中的另一篇文章《如何在两台linux服务器之间用RSA键对的方法SSH/SCP不需密码》
while [ 1 ] ; do ssh -C -P -f sshaccount@S -L 110:S:110 sleep 7200 sleep 1 done
|