第三部分 其他类型的转发

动态转发实例分析

恩,动态转发,听上去很酷。当你看到这里时,有没有想过我们已经讨论过了本地转发,远程转发,但是前提都是要求有一个固定的应用服务端的端口号,例如前面例子中的 LDAP 服务端的 389 端口。那如果没有这个端口号怎么办?等等,什么样的应用会没有这个端口号呢?嗯,比如说用浏览器进行 Web 浏览,比如说 MSN 等等。

当我们在一个不安全的 WiFi 环境下上网,用SSH协议动态转发来保护我们的网页浏览及 MSN 信息无疑是十分必要的。让我们先来看一下动态转发的命令格式:

  1. $SSH-D <local port> <SSH Server> 

例如:

  1. $SSH-D 7001 <SSH Server> 

图 5. 动态端口转发

图 5. 动态端口转发

似乎很简单,我们依然选择了 7001 作为本地的端口号,其实在这里SSH是创建了一个 SOCKS 代理服务。来看看帮助文档中对 -D 参数的描述:

-D port  This works by allocating a socket to listen to port on the local  side, and whenever a connection is made to this port, the con-  nection is forwarded over the secure channel, and the applica-  tion protocol is then used to determine where to connect to from  the remote machine.  Currently the SOCKS4 and SOCKS5 protocols  are supported, andSSHwill act as a SOCKS server.  Only root  can forward privileged ports.  Dynamic port forwardings can also  be specified in the configuration file.

之后的使用就简单了,我们可以直接使用 localhost:7001 来作为正常的 SOCKS 代理来使用,直接在浏览器或 MSN 上设置即可。在SSH Client 端无法访问的网站现在也都可以正常浏览。而这里需要值得注意的是,此时SSH协议所包护的范围只包括从浏览器端(SSH Client 端)到SSH Server 端的连接,并不包含从SSH Server 端 到目标网站的连接。如果后半截连接的安全不能得到充分的保证的话,这种方式仍不是合适的解决方案。

X协议转发实例分析

好了,让我们来看最后一个例子-X协议转发。

我们日常工作当中,可能会经常会远程登录到 Linux/Unix/Solaris/HP 等机器上去做一些开发或者维护,也经常需要以 GUI 方式运行一些程序,比如要求图形化界面来安装 DB2/WebSphere 等等。这时候通常有两种选择来实现:VNC 或者X窗口,让我们来看看后者。

使用X窗口通常需要分别安装:X Client 和XServer 。在本例中我们的XClient 就是所访问的远程 Linux/Unix/Solaris/HP,而我们的XServer 则是发起访问的本地机器(例如你面前正在使用的笔记本或台式机)。把XClient 端的X窗口显示在XServer 端需要先行在XClient 端指定XServer 的位置,命令格式如下:

  1. export DISPLAY=<X Server IP>:<display #>.<virtual #> 

例如:

  1. export DISPLAY=myDesktop:1.0 

然后直接运行X应用即可,X 窗口就会自动在我们的本地端打开。

一切运行正常,但是,这时候 IT 部门突然在远程 Linux/Unix/Solaris/HP 前面加了一道防火墙。非常不幸的是,X协议并不在允许通过的列表之内。怎么办?只能使用 VNC 了么?不,其实只要使用了SSH协议端口转发即可通过,同时也对X通讯数据做了加密,真是一举两得。(当然,使用此方法前最好先咨询相关 IT 部门是否符合相应的安全条例,以免造成违规操作。)

建立命令也很简单,直接从本地机器(X Server 端)发起一个如下的SSH连接即可:

  1. $SSH-X <SSH Server> 

图 6. X转发

图 6. X转发

建立连接之后就可以直接运行远程的X应用。注意建立X转发之后会自动设置 DISPLAY 环境变量,通常会被设置成localhost:10.0,我们无需也不应该在连接之后再进行修改此环境变量。

一个比较常见的场景是,我们的本地机器是 Windows 操作系统,这时可以选择开源的 XMing 来作为我们的 XServer,而SSH Client 则可以任意选择了,例如 PuTTY,Cygwin 均可以配置 访问SSH的同时建立X转发。


相关内容