用 SSH tunneling 建立安全的网络通讯(50分)

Y

yysun

Unregistered / Unconfirmed
GUEST, unregistred user!
最近学到一招,觉得挺有用,介绍给大家。
当我们需要通过 Internet 把数据或者文件送到服务器上的时候,比如存放在 ISP 那里
的主机上,或者从家里存取公司里服务器上的数据。服务器就往往开着很多 tcp 端口,
例如 ftp, pop, smtp, sql server, mysql, telnet, cvs ... 而这些协议本身的
数据加密功能不是很好的。
于是我们可以建立 SSH tunneling 来做到安全的网络通讯。(SSH - Security Shell)
原理是在服务器端只设 SSH Server,关掉其他端口。
在客户机端设置 SSH Client,并设置 SSH tunneling,把对 tcp 端口的请求转到服务器。
例如,服务器上有 cvs server,原来开着 2401,2402 端口,客户机通过访问服务器上的
这两个端口上传下载文件。用了 SSH 以后,客户机设置 SSH tunneling,客户机只访问
localhost 的 2401,2402,SSH 把相关请求通过 SSH tunnel 转发到服务器。
因为 SSH 是经过加密的,所以,这样的通讯就很安全了。
同理,我们还把数据库通讯也建立到了 SSH 上。
有兴趣的朋友不妨也试试看。
http://www.ssh.com
http://www.openssh.org
 
孙老师,今天我们一个同学才和我们说什么SSH,没有一个人知道他说什么,原来你早就知道了,呵呵!
 
哦,原来RedHat安装包里的那个什么什么tunnel是干这个的啊,我还特意把它去掉了,我还说这怎么mysql到服务器上呢。
我也是这两天装linux的时候无意接触到了SSH,因为我没装X-Window,也不想用samba,本来想通过ftp和telnet跟服务器连呢,
在找好用的相关工具的时候从linux的论坛上发现在大讲SSH,当了几个客户端的SSH访问工具,还真不错。
不过我在最近一次安装linux配防火墙的时候只留了HTTP和SSH端口,正愁怎么走mysql呢,虽然可以把mysql的端口打开,
总觉得不是太好的办法(再有新的端口要求又要开),现在看来可以只通过SSH走了,孙老师能不能以mysql为例给具体地讲讲?
 
以 mySql (却省用 3306端口) 为例,
首先设置 SSH Server 接受 3306 端口的 tunnel 请求。
然后设置 SSH Client,把对本机 (localhost) 3306 端口的请求转发到服务器。
使用时,启动 SSH Server,用 SSH Client 连接到 SSH Server。
mysql -h localhost <database> 实际上转发为对服务器的操作。
使用 JDBC,则可以用 jdbc:mysql://localhost/<database> 也一样。
 
哦,不是jdbc:mysql://remotehost啊。嘿,这样一来客户端的配置都不用改,完全透明了!fairy good!
感谢校长!
 
顶部