Putty+Xmanager 很Cool的远程访问组合

sshong 2010-06-24

一种很Cool的玩法, 而且配置超简单, 安全性也好, 就是Putty+Xmanager, 这种方式运行的X应用看起来更像是个MS Windows程式, 事实上窗口管理器使用的确实是MS Windows, 后面有图.
总体思路
Xmanager作为X服务器, 以Passive模式起动, 默认监听6000端口.
MS Windows作为窗口管理器, 负责管理各种窗口(包括远端X应用的窗口), 比如移动, 改变大小, 关闭......
Ssh服务器(sshd)和客户端(Putty)建立一个安全通道, 各种数据都通过这个加密的通道传输.
建立连接以后, Sshd监听的端口号从6010开始(准确的说是SSHD的子进程), 假如有第二个ssh客户端连接主机,
则sshd监听6011端口, 依此类推.
Linux端 DISPLAY 是个至关重要的环境变量, 他决定了X应用显示到哪里的X服务器及显示号. 按照以下配置, 默认值为:
localhost:10.0                或 localhost:11.0
                 ^^                                               ^^
这里10或11和上面提到的6010, 6011是相关联的.
数据流:
远端X应用请求 -> 远端sshd服务器(6010端口) -> 本地ssh客户端(Putty端口随机) -> 本地X服务器(Xmanager, 6000端口)
1.        起动本地X服务器
安装Xmanager以后, 开始菜单 -> 程式 -> Xmanager2 -> Xmanager ? Passive
2.        使用Putty登录到远程主机
Putty需要特别配置的选项: Connection -> SSH -> X11
     选中 Enable X11 forwarding 选项.
3.        服务器端配置: /etc/ssh/sshd_config
确保有这行: X11Forwarding yes
Red Hat AS 4 默认就是这样.
4.        使用各种命令, 当然包括GUI程式. 如:
# system-config-network
似乎不行啊, GUI程式起动不了. 怀疑是防火墙的问题, 把Linux和Windows的防火墙都关了, 还是不行. 从远程telnet本地6000端口, 连接是通的(打开防火墙也是如此).
用netstat查看, 发现sshd监听的是127.0.0.1:6010 这个地址, 而不是任意地址.
telnet localhost 6010     (DISPLAY中是localhost)
发现telnet的实际地址是192.168.88.102(Linux主机的IP), 而不是期望中的127.0.0.1
将DISPLAY改为 127.0.0.1:10.0           再使用GUI程式, 一切正常.
现在问题很明显了, 是/etc/hosts文档有问题, 这个文档我没有改过, 系统自动生成的是这样的:
# Do not remove the following line, or various programs
# that require network functionality will fail.
192.168.88.102          kevin localhost.localdomain localhost
127.0.0.1               kevin localhost.localdomain localhost
Red Hat 为什么会生成如此这般的格式我很奇怪, 按照手册页的描述, 这个文档应该是这种格式:
IP_address canonical_hostname aliases
如:
127.0.0.1              localhost.localdomain   localhost
192.168.88.102                                                   kevin
不管那么多了, 将hosts文档修改成上面那样, 一切OK.

1、运行 Xmanager - Passive,缺省的设置是 localhost:0.0

2. putty 设置
注意两项
(1)Translation -> Character set translation on recived data 选择 utf-8
(2)SSH -> X11 ->X11 forwarding
勾选 Enable X11 forwarding
X display location 填 localhost:0.0 或 localhost:0

3、解决远程输入法和本地输入法快捷键冲突

关闭本地的输入法切换快捷键,远程的输入法快捷键就有作用了,可以切换远程的输入法,输入中文。

Another tool  is Xming

相关推荐