采用 FreeNX 的 NX 服务器
NX 及 FreeNX 服务器只供 CentOS-4 及 CentOS-5 使用 Contents - 在服务器上安装 NX/FreeNX
- 用金钥验证
- 安装 NoMachine 客户端
- 疑难解答
- 杂记
NX 是一个终端機及远程访问的方案,它建基於 NoMachine 的企业级开源科技。亏得那开发於 X 窗口系统上的超卓压缩、灵活性工作阶段、及资源管理技术,再整合 Linux/Unix 世界内强大的分享、打印及音讯功能,NX 令你跨网络连接执行任何图像应用程序时,仿如身处在 CentOS(服务器)计算机面前。
进行连接时,你需要有一台服务器计算机(你将要连接及在其上打开桌面的计算机),与及一台客户端计算机(你将要用来对服务器进行连接的计算机)。
1. 在服务器上安装 NX/FreeNX
现时 CentOS Extras 软件库内备有 NX 及 FreeNX 的组件。
要安装稳定版的 NX/FreeNX,请在服务器上执行这个指令:
yum install nx freenx
你亦可以从这里下载 RPM(64 位元请以 x86_64 代替 i386):
http://mirror.centos.org/centos/4/extras/i386/RPMS/
http://mirror.centos.org/centos/5/extras/i386/RPMS/
及从这里下载 SRPM:
http://mirror.centos.org/centos/4/extras/SRPMS/
http://mirror.centos.org/centos/5/extras/SRPMS/
注:有时候,有些问题会导致你须要在 NX 服务器上同时安装 No Machine 客户端。如果你遇到问题,例如不能关闭客户端,请下载最新的 No Machine Linux 客户端 RPM (见下面的 Linux 连结),并将它安装在你的 NX 服务器上。这些问题在 NX > 3 及 freenx > 0.7 版本里已经甚少出现。 |
2. 用金钥验证
注:假如你已经停用 ssh 的密码验证(这个推荐并非必然的),你需要跟从以下的指引。否则你可以略过这部份。
freenx-0.7.3-6.el5.centos 或更新版的 freenx 组件都附带有 /etc/nxserver/node.conf 档。假如你拥有旧版本,你必须通过复制 node.conf.sample 档来创建它:
[root@server ~]# cd /etc/nxserver ; cp node.conf.sample node.conf
假若你已停用密码验证的话,你的 /etc/ssh/sshd_config 档内应该有下面这行:
PasswordAuthentication no
现在请把下面这行加进 sshd_config 档内:
AllowUsers nx
在作出修改后请重新引导 sshd 守护程序:
[root@server ~]# service sshd restart
根据缺省值,当你尝试连接到 NX 服务器时,它会利用 nx 这个户口进行 ssh 连接(通过金钥验证),但亦会尝试在 ssh 内以你的用户名称及口令连接到你要接触的主机。由於我们已经停用 PasswordAuthentication(推荐做法),我们须要利用 NX 数据库来容许直通验证。请确定 /etc/nxserver/node.conf 文件内包含下列数行:
ENABLE_PASSDB_AUTHENTICATION="1"
请把自己加进 nxserver 数据库内。假设你的用户名称是 bob:
[root@server ~]# nxserver --adduser bob
NX> 100 NXSERVER - Version 1.5.0-60 OS (GPL)
NX> 1000 NXNODE - Version 1.5.0-60 OS (GPL)
NX> 716 Public key added to: /home/bob/.ssh/authorized_keys2
NX> 1001 Bye.
NX> 999 Bye
设置 bob 的密码:
[root@server ~]# nxserver --passwd bob
NX> 100 NXSERVER - Version 1.5.0-60 OS (GPL)
New password:
Password changed.
NX> 999 Bye
把 bob 加进 /etc/ssh/sshd_config 档的 AllowUsers 行:
AllowUsers nx bob
你可以利用同一组步骤加入其它用户。
然后重新装入 sshd:
[root@server ~]# service sshd reload
3. 安装 NoMachine 客户端
NoMachine 不客许发行他们的客户端,因此必须他们的网站下载。客户端备有 Linux、Mac OSX、Solaris 及 微软 Windows 版本。
注: 3.1.x 及 3.0.x 版的 Nomachine 客户端可以配合 CentOS 所提供的 FreeNX/NX 方案。 |
请选择适合你的操作系统的客户端,按照 No Machine 网站上的指引安装在你的操作系统上,然后利用以下的指示来连接到你的 NX 服务器。
http://wiki.centos.org/HowTos/FreeNX?action=AttachFile&do=get&target=nxclient1new.jpg
http://wiki.centos.org/HowTos/FreeNX?action=AttachFile&do=get&target=nxclient2new.jpg
http://wiki.centos.org/HowTos/FreeNX?action=AttachFile&do=get&target=nxclient3new.jpg
http://wiki.centos.org/HowTos/FreeNX?action=AttachFile&do=get&target=nxclient4new.jpg http://wiki.centos.org/HowTos/FreeNX?action=AttachFile&do=get&target=nxclient5new.jpg
4. 疑难解答
利用微软 Windows 的 NX 客户端连接到 CentOS 上现存的(0.5.0-8)NX 服务器似乎有困难。这就是所谓的「备份存储」问题。
这个问题已经在 0.5.0-9(或以上)版本的 CentOS 组件中得到修正。它们可以在 Extras 软件库内找到。它不应再构成问题,但我们会将信息保留,供使用旧版本的人们作为参考。
来自 FreeNX 常见问题集:
备份存储问题:
Thorsten Sandfuchs 发现一些关於备份存储的问题。当你尝试以一个 2.0.0 客户端连接到一个不支持 2.0.0 备份存储的 0.5.0 安装,问题便会浮现。这是由於 Nomachine 更改了 backingstore-option 的行为。1.5.0 客户端传送 "always, when_requested" 等文字,而 freenx 会直接将这个符串转送给 nxagent-call。新版本的客户端现在传送 "backingstore=1",导致 1.5.0 版的 nxagent 发出一个警告及一个 "no argument required for -bs" 或 "Error: NX Agent exited with exit status 1." 的错误。你可以在这里阅读整段信息:Backingstore or 2.0.0-client and 1.5.0 backend and freenx-0.5
查看 nxnode 并在 node_start_agent() 函数内,於这行之后
[ -n "$backingstore" ] && B="-bs $backingstore"
加入下列数行:
# backingstore = { "when_requested", "always", ... }
[ -n "$backingstore" -a "$ENABLE_2_0_0_BACKEND" != "1" -a "$backingstore" != "1" ] && B="-bs $backingstore"
# backingstore = 1 (new nxclient 2.0.0 doesn't send any strings in the option-string for backingstore anymore)
[ -n "$backingstore" -a "$ENABLE_2_0_0_BACKEND" != "1" -a "$backingstore" = "1" ] && B="+bs"
# backingstore = 1 and 2.0.0-Backend EXPERIMENTAL
[ -n "$backingstore" -a "$ENABLE_2_0_0_BACKEND" = "1" ] && B="-bs $backingstore"
这个方法适用於 2.0.0-98 版的 nxclient。
--Predseda3D 15:12 Aug 2, 2006 (BST)
Windows Vista 上的 NX 客户端高(100%)处理器负荷:
某些用户报告 NoMachine NX 微软 Windows 客户端在 Vista 上执行时导致高(100%)处理器负荷。据称在 NX 客户端停用 DirectDraw 能够解决这个问题。请看以下的讨论:
http://www.centos.org/modules/newbb/viewtopic.php?topic_id=14363&forum=38
5. 杂记
假若你在远程服务器上安装 FreeNX,你亦需要在这台机器上安装桌面环境,才能执行远程工作阶段。一个简单地安装 Gnome 的方法就是执行以下指令:
yum groupinstall 'GNOME Desktop Environment' 'X Window System'
注:如果你运用 CentOS 5,yum groupinstall "GNOME Desktop Environment" 可能会投诉 libgaim.so.0 被遗漏。这是一个已知的错误。详情请参阅 CentOS-5 常见问题集。
FreeNX 预期能用 ssh 连接到 127.0.0.1,也就是当地主机的地址。如果你没有更改缺省的 sshd_config,sshd 守护程序应该可以在这个 IP 地址上找到。
然而,如果你更改了 /etc/ssh/sshd_config 内的 ListenAddress 那一行,这可能会构成一个问题。请该定 sshd 存在於 127.0.0.1 上。你可以这样检查
netstat -an |grep 22
所得的结果应该与下面相若
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 :::22 0.0.0.0:* LISTEN
(上面假设你采用缺省的端口 22 作为 ssh 连接。)这个输出表示 sshd 正在所有地址上聆听。
基於各种原因,人们有时会修改 sshd_config 在特定的地址来聆听。如果你看见的类似
tcp 192.168.1.20:22 0.0.0.0:* LISTEN
那就意味著 sshd 只聆听 192.168.1.20 这个地址上的连接。这样做会导致 FreeNX 连接到 127.0.0.1 时失败。
要修正这个问题,请在 /etc/ssh/sshd_config 内加入另一行 ListenAddress 行。它应该包含
ListenAddress 127.0.0.1
(这个 ListenAddress 记录应该独占一行。)
如果你用远程连接,采用 screen 这个指令。你将要重新引导 sshd,而这样做会中断远程的 ssh 工作阶段。(还有其它方法可以重新引导 sshd 常注程序而又不会中断你的连接,但 screen 是其中一个最容易的办法。)
screen
这样做会带给你一个指令提示。重新引导 sshd。
/etc/init.d/sshd restart
再次利用 netstat -an 来检查它现在是否於 127.0.0.1 上耹听。
netstat -an
你现应该看见类似这样的输出
tcp 192.168.1.20:22 0.0.0.0:* LISTEN
tcp 127.0.0.1:22 0.0.0.0:* LISTEN
FreeNX 现在将会能够连接。
|