由于传统的 VNC 或者 XDMCP/X11 服务安全性不足,这些服务只适合用于局域网,不能在广域网使用。
本文示例了配置 SSH Tunnel 隧道访问 AIX 图形界面的方法,通过 SSH 隧道 RSA/DSA 加密,可显著提高访问密码的安全性。文中共列举了三种配置方法,读者可以根据自身需要选取其中一种即可。
可以在 AIX Toolbox for Linux 里面下载 VNC 安装包:
http://www-03.ibm.com/systems/power/software/aix/linux/toolbox/download.html
运行如下命令安装:
#rpm -ivh vnc-3.3.3r2-6.aix5.1.ppc.rpm
运行如下命令启动 vncserver , 1 为显示窗口 ID ,首次配置需要设置访问密码:
#/opt/freeware/bin/vncserver :1
说明:
a、 相应的停止方法为 (1 为窗口 id) :
#/opt/freeware/bin/vncserver -kill :1
b、 普通用户也可以启动自己的 vncserver ,且同一个用户可以启动多个 vncserver 。但相应的 X 窗口 id 必须不同:例如 root 用户启动 id=1 的窗口 ( 如上示例 ) , test 用户启动 id=2 的窗口, guest 用户启动 id=3 的窗口, 依此类推 .
c、 Vncserver 监听的 VNC 连接端口为 5900+ 窗口 id.
[http://www.putty.org/](http://www.putty.org/)
说明 :
一些早期 版本的 putty 可能不具备 T unnel 功能或 X11 转发功能,如 Release 0.57 就不支持 X11 转发功能。所以建议尽量使用最新版本,本文中使用的 putty 版本为 Release 0.62 。
配置一个 session ,修改如下 Putty 属性:
Connection-> SSH -> Tunnels
各项目含义解释:
Source Port : 定义本机( PC 客户端)接受 VNC Client 连接的端口,参考如下第 5 步;
说明:这个端口是本机的端口,可以是任何与本机其他服务不冲突的端口,例如 4000 、 5000 等等。尤其是如果一个客户端机器同时访问多个 VNC Server的情况,必须分配不同的本地端口,以避免端口冲突。
Destination :
从 SSH Server 的角度而言, VNC Server 的服务地址及端口;此处而言, VNC Server 就是 SSH Server 本身,所以此处直接设为 localhost. 例如 VNC Server 的监听端口是 5901 ,此处即为 localhost:5901 ;显示窗口为 2 的话,监听端口为 5902 ,相应的 Destination 设置应为 localhost:5902..
说明:更复杂的 tunnel 可能有多跳( hop) 的情况,这种情况就不是 localhost 了。
回到 session 栏目,配置 SSH Server ,并保存该 session:
登录配置好的 session ,输入用户名 / 密码;并在 VNC 连接期间保持打开。
说明:如果隧道关闭了, VNC 连接当然就无法转发了。
VNC 客户端下载地址:
[http://www.realvnc.com/products/free/4.1/winvncviewer.html](http://www.realvnc.com/products/free/4.1/winvncviewer.html "http://www.realvnc.com/products/free/4.1/winvncviewer.html")
VNC 客户端打开本地端口 5901 即可登录图形界面。整个过程通过 SSH 加密传输, GUI 界面不引入额外的安全风险。
a. VNC 客户端连接失败
检查 putty 的 Event Log, 正常的情况下,应该有如下提示;否则需检查 SSH Tunnel 设置:
2012-04-11 09:56:57 Local port 1001 forwarding to localhost:5901
VNC Client 登录成功后,会有如下提示:
2012-04-11 09:57:18 Opening forwarded connection to localhost:5901
参考:
cd 到用户的 $HOME/.vnc 目录,删除 passwd 文件即可。
c. 更改 Xterm 为 CDE 窗口的方法
VNC 默认终端使用 xterm 方式,与 CDE 相比, xterm 风格比较简单。如下需要使用 CDE 式窗口,可以按如下方式设置 : 修改相应用户 HOME 目录下的 .vnc/xstartup 文件 , 把 xterm 改成 dtsession 即可 ; 参考如下粗体字部分的修改:
[/.vnc]#cat xstartup
#!/bin/sh
xrdb $HOME/.Xresources
xsetroot -solid grey
**#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &**
**sh -c "LANG=C; DISPLAY=$DISPLAY; export LANG DISPLAY; /usr/dt/bin/dtsession"**
twm &
说明:
使用 CDE 窗口需要安装 X11.Dt 相关的程序包,相关内容参考后续章节 ;
d. 授权其他用户访问本用户 GUI 界面的设置方法
多个用户或者同一个用户,都可以在不同的端口上启动多个 vnc server ,以获得各自独立的 GUI 窗口。例如 root 用户使用 vncserver :1, test 用户可使用 vncserver :2 等等。
如果切换到其他用户,仍希望使用本用户的窗口,则需要授权;授权方法如下:
查看 DISPLAY 取值:
[/]#echo $DISPLAY
node2:1.0
根据DISPLAY取值,确认鉴权项(如下 粗体字 部分):
[/]#**xauth list**
**node2:1 MIT-MAGIC-COOKIE-1 4c0b5b67969132bfff1f8a225574d666**
**node2/unix:1 MIT-MAGIC-COOKIE-1 4c0b5b67969132bfff1f8a225574d666**
node2:2 MIT-MAGIC-COOKIE-1 4c0b5b67969132bfff1f8a225574d666
node2/unix:2 MIT-MAGIC-COOKIE-1 4c0b5b67969132bfff1f8a225574d666
切换到需要GUI的 其他 用户,添加鉴权项目,并设置DISPLAY即可:
[/]#su - test
test@node2<~>**xauth add node2:1 .** **4c****0b5b67969132bfff1f8a225574d666**
1356-364 xauth: creating new authority file /home/test/.Xauthority
test@node2<~>**xauth add node2/unix:1 .** **4c****0b5b67969132bfff1f8a225574d666**
test@node2<~>export DISPLAY=localhost:1.0
test@node2<~>xclock
确认系统是否已安装 X11.Dt 相关的程序包 :
X11.apps.all
X11.base.all
X11.compat.all
X11.fnt ( 字体文件集,选取部分即可 )
X11.motif.all
X11.Dt.all:
X11.Dt.bitmaps ---CDE 位图
X11.Dt.helpmin --- 最小帮助文件
X11.Dt.helprun --- 运行时帮助
X11.Dt.lib ---AIX CDE 运行时连接库
X11.Dt.ToolTalk --TootTalk 支持
X11.Dt.bitmaps --CDE 位图
X11.Dt.helpmin --- 最小帮助文件
X11.Dt.rte ---AIX 通用桌面环境
如果没有上述软件包,可使用安装光盘的第二张来安装这些软件包;
修改配置,防止 ASCII 控制台启动 CDE ; 安装完后,设置如下:
#cp /usr/dt/config/Xservers /etc/dt/config/Xservers
然后,注释 /etc/dt/config/Xservers 最后启动 Xserver 的一行,以防止在 ASCII 控制台启动 CDE.
启动 CDE
以 root 用户身份启动 CDE :
a. 在 AIX 启动时自动启动 CDE 。使用 root 用户登录,并在命令行中执行:
#/usr/dt/bin/dtconfig -e
b. 在命令行中启动 CDE :
#/etc/rc.dt;exit
c. 确认 CDE 已经启动:
#ps -ef |grep dtlogin
#netstat -an|grep 177
udp4 0 0 *.177 *.*
如果您看到 dtlogin 进程在运行,且 UDP 端口 177 已打开,则说明 CDE 已经正常启动。
a 、编辑 /etc/ssh/sshd_config ,打开 X11Forwarding :
# vi /etc/ssh/sshd_config
修改如下几行:
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
b 、重启 sshd
# stopsrc -s sshd
0513-044 The sshd Subsystem was requested to stop.
# startsrc -s sshd
0513-059 The sshd Subsystem has been started. Subsystem PID is 3997734.
注意:
sshd 不接受 refresh –s 方式刷新配置,只能重启;
SSH Server 端默认的 TCP 监听端口从 6000+ 10 ( 10 即 X11DisplayOffset 取值 )开始;新的客户端连接依次是 6010, 6011, ...
配置一个 session ,修改如下 Putty 属性 :
Connection-> SSH -> Tunnels
Xmanager 可以通过如下网站获取:
http://www.netsarang.com/products/xme_overview.html
以如下方式在 Windows 客户端启动 Xmanager :
开始 -> 所有程序 -> Xmanager Enterprise 3 -> Xmanager – Passive
登录已设置好 X11Forwarding 的 putty session ,即可在此会话上使用图形终端 .
同上一章 1-2 .
Cygwin/X 安装步骤以及下载方法参考:
http://x.cygwin.com/docs/ug/setup.html#setup-cygwin-x-installing
Cygwin/X 相关的包在 X11 分类下,注意需要显式选择如下安装包:
xorg-server ( 必须, Cygwin/X X 服务器 )
xinit ( 必须,相关的启动脚本,如 xinit, startx, startwin)
xorg-docs ( 可选,帮助文件 )
X-start-menu-icons ( 可选,添加项目到“开始”菜单 )
安装过程视网速而定,一般需要 1-2 小时。
开始 -> 所有程序 -> Cygwin-X -> Xwin Server
打开 Xwin ;
直接 ssh –Y @ 登录相应 SSH Server 即可。
参考:
第一种方式(使用 Putty + VNC )安装配置起来最简单快捷。但如果需要连接多个图形窗口,则需要手工启动多个 vncserver 进程;而且图形界面风格比较简约。
第二、三种方式相关软件安装相对复杂一些,但连接多个图形窗口不需要额外的设置。其中第二种方式需要借助商业软件 Xmanager ;第三种方式需使用开源的 Cygwin/X 。
读者可以根据自身的情况选择最合适的方式。
本文档介绍了如何通过 SSH 隧道方式 GUI 连接 AIX 图形界面,该方案可以作为 AIX 服务器在广域网上提供 GUI 接口的标准方式。
Installing Xwindows from an ASCII Terminal
介绍了在 AIX 如何安装 Xwindows 相关的文件集。
Using PuTTY
http://the.earth.li/~sgtatham/putty/0.52/htmldoc/Chapter3.html#3.1.3.1
介绍了 Putty 的使用方法,包括 SSH 隧道的配置方法以及常见问题的定位方法。
XonAIX wiki
https://www.ibm.com/developerworks/wikis/display/WikiPtype/XonAIX
列举了在 AIX 上安装 Xwindows 的各种相关问题以及相应解决方法。
Setting Up Cygwin/X
http://x.cygwin.com/docs/ug/setup.html#setup-cygwin-x-installing
介绍了 Cygwin/X 的详细安装步骤。
Cygwin-X Frequently Asked Questions
http://x.cygwin.com/docs/faq/cygwin-x-faq.html
提供了 Cygwin/X 常见使用问题的解答。
本文最初由 IBM developerWorks 中国网站发表,发布时间 2012 年 7 月 23 日,其网址是 http://www.ibm.com/developerworks/cn
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞1
添加新评论1 条评论
2021-02-26 13:17