[FrontPage] [TitleIndex] [WordIndex

This is a read-only archived version of wiki.centos.org

采用 FreeNX 的 NX 服务器

<<TableOfContents: execution failed [Argument "maxdepth" must be an integer value, not "[1]"] (see also the log)>>

NX 是一个终端机及远程访问的方案,它构建于 NoMachine 的企业级开源科技。亏得那开发于 X 窗口系统上的超卓压缩、灵活性工作阶段、及资源管理技术,再整合 Linux/Unix 世界内强大的分享、打印及音讯功能,NX 令你跨网络连接执行任何图像应用程序时,仿如身处在 CentOS(服务器)计算机面前。

进行连接时,你需要有一台服务器计算机(你将要连接及在其上打开桌面的计算机),与及一台客户端计算机(你将要用来对服务器进行连接的计算机)。

1. 在服务器上安装 NX/FreeNX

现时 EPEL + nux-dextop 软件库内备有供 CentOS 6 用的 NX 和 FreeNX 组件。

首先,同时安装这两个软件库:

[root@server ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@server ~]# rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm

要安装稳定版的 NX/FreeNX,请在服务器上执行这个指令:

[root@server ~]# yum install freenx-server nxagent 

一些其他的软件包会由于依赖关系而被安装。

注:有时候,有些问题会导致你须要在 NX 服务器上同时安装 No Machine 客户端。如果你遇到问题,例如不能关闭客户端,请下载最新的 No Machine Linux 客户端 RPM (见下面的 Linux 连结),并将它安装在你的 NX 服务器上。这些问题在最新版本里(即 NX > 3 及 freenx > 0.7)已经甚少出现。

2. 设置

NX 采用 ssh 协议来连接到远程服务。假若你以金钥核对身份,你必须按照以下步骤把你的用户名称加进 NX 的用户名单内:

请确定 /etc/nxserver/node.conf 文件内包含以下一行(检查该行没有被注释掉):

ENABLE_PASSDB_AUTHENTICATION="1" 

请把自己加进 nxserver 数据库内。假设你的用户名称是 bob,请以 root 的身份执行以下指令:

[root@server ~]# /usr/libexec/nx/nxserver --adduser bob

你应该会看见以下输出:

NX> 100 NXSERVER - Version 3.2.0-74-SVN OS (GPL,using backend: not detected)
NX> 1000 NXNODE - Version 3.2.0-74-SVN OS (GPL,using backend: not detected)
NX> 716 Public key added to: /home/bob/.ssh/authorized_keys2
NX> 1001 Bye.
NX> 999 Bye

第一次运行上述命令时,你也许会看到消息:“No such file or directory”。这是意料之中的,并非出现问题。

设置 bob 的密码:

[root@server ~]#  /usr/libexec/nx/nxserver --passwd bob

它便会有如下输出,只要求密码一次:

NX> 100 NXSERVER - Version 3.2.0-74-SVN OS (GPL,using backend: not detected)
New password:
Password changed.
NX> 999 Bye

查看文件 /etc/ssh/sshd_config。如果你之前定义了 AllowUsers,下面你需要把用户 nxbob 添加进这一行。

AllowUsers nx bob

这样便完成了。你的远程机器已准备好接纳 NX 客端登录。


3. 安装 NX 的客户端

[INFO]

你可择选安装 opennx 或来自 NoMachine 的 nxclient。

3.1. 安装 opennx

注:如果你已经安装了 NoMachine 的 nxclient,你必须先把它卸装,然后才安装 opennx。客户端的现有设置应该会留下来给 opennx。

CentOS-6 用的 Opennx 已收录在 centos-extras 软件库。要进行安装,请在客端机器上执行这个指令:

[root@client ~]# yum install opennx


attachment:HowTos/FreeNX/opennx2.png


attachment:HowTos/FreeNX/opennx3.png



attachment:HowTos/FreeNX/opennx5.png


attachment:HowTos/FreeNX/opennx6.png attachment:HowTos/FreeNX/opennx7.png


3.2. 安装 NoMachine 的 nxclient

NoMachine 不客许发行他们的客户端,因此你必须從他们的网站下载。客户端备有 LinuxMac OSXSolaris微软 Windows 版本。

注: 3.5.x、3.1.x 及 3.0.x 版的 Nomachine 客户端可以配合 CentOS 所提供的 FreeNX/NX 方案。

请选择适合你的操作系统的客户端,按照 No Machine 网站上的指引安装在你的操作系统上,然后利用以下的指示来连接到你的 NX 服务器。


attachment:HowTos/FreeNX/nxclient1new.jpg


attachment:HowTos/FreeNX/nxclient2new.jpg


attachment:HowTos/FreeNX/nxclient3new.jpg


attachment:HowTos/FreeNX/nxclient4new.jpg attachment:HowTos/FreeNX/nxclient5new.jpg


4. 疑难解答

利用微软 Windows 的 NX 客户端连接到 CentOS 上的 NX 服务器(0.5.0-8)似乎有困难。这就是所谓的「备份存储」问题。

这个问题已经在 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 能够解决这个问题。请看以下的讨论:https://www.centos.org/forums/viewtopic.php?t=19396

$DISPLAY 中的 $HOSTNAME:

如果在 $DISPLAY 变量中包含了一个类似 "myhost:1000.0" 的主机名, 那么执行 xhost + 的时候会失败:

$ xhost +
xhost: unable to open display "myhost:1000.0"

解决方案: 编辑 /etc/nxserver/node.conf 并且更改此行:

#AGENT_EXTRA_OPTIONS_X="-nolisten tcp"

为:

AGENT_EXTRA_OPTIONS_X=""

https://www.centos.org/forums/viewtopic.php?t=16677

不能连接:

如果 nx 在最后一步连接失败并停了下来,请检查你在服务器上的主目录。删除所有 .Xauthority* 档(或把它们移往别处)然后重试。要是这样没有帮助,请尝试删除 /tmp/.X11-unix。

ESXi5/VMTools 及 FreeNX:

当你在一台 ESXi5 主机上安装 CentOS6.x 时,NX-Session 有可能在安装 VMTools 后不能再运作。桌面会跳出,但繁忙图示会无限期地逗留在划面上。据 NoMachine 称这是 VMTools 8.6.0 版的错误。解决方法可参考连结。

更新装有 FreeNX 的 C6 至一台 ESXi5 主机:

把一台运行 C6 的虚拟机器上的 VMTools 从 ESX4 升级至 ESXi5 亦可能令 GNOME-Desktop 出现问题。同样地桌面会跳出,但繁忙图示会无限期地逗留在划面上。似乎删除 ESX4 的 VMTools 时,它未能正确地撤消 vmwlegacy_drv.so。创建以下的连结可解决这个问题:

在 x64:

ln -s /usr/lib64/xorg/modules/drivers/vmwlegacy_drv.so.old.0 /usr/lib64/xorg/modules/drivers/vmwlegacy_drv.so 

在 i386:

ln -s /usr/lib/xorg/modules/drivers/vmwlegacy_drv.so.old.0 /usr/lib/xorg/modules/drivers/vmwlegacy_drv.so 

5. 杂记

图像界面的考虑

假若你在远程服务器上安装 FreeNX,你亦需要在这台机器上安装桌面环境,才能执行远程工作阶段。一个简单地安装 Gnome 的方法就是执行以下指令:

CentOS 5:

yum groupinstall 'GNOME Desktop Environment' 'X Window System'

CentOS 6:

yum groupinstall 'Desktop' 'X Window System'

注:如果你运用 CentOS 5,yum groupinstall "GNOME Desktop Environment" 可能会投诉 libgaim.so.0 被遗漏。这是一个已知的错误。详情请参阅 CentOS-5 常见问题集

你也必须安装相关的字体及确保 font 服务在运行中(CentOS 上)

SSH 的考虑

/!\ 以下信息只供 CentOS 5.x 应用。请你切勿在 CentOS 6.x 上如此做,它有可能导致 ssh 不能访问该台机器。

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 是其中一个最容易的办法。如果你未安装它,请先用 yum install 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 现在将会能够连接。

再重复一遍,加入 127.0.0.1 侦听地址这一步只适用于 CentOS 5.x。切勿在 CentOS 6.x 上如此做。

还有请记住,(不论是哪一版的 CentOS),要是你利用 sshd_config 内的 AllowUsers 或其它访问控制系统来管理谁能登录机器内,务请你把 nx 这个用户加进列表中。

不采用 yum 下载 FreeNX 的 rpm

你也可从这里下载 RPM:

CentOS5: i386:http://mirror.centos.org/centos/5/extras/i386/RPMS/ x86_64:http://mirror.centos.org/centos/5/extras/x86_64/RPMS/

CentOS6: i386:http://mirror.centos.org/centos/6/extras/i386/Packages/ x86_64:http://mirror.centos.org/centos/6/extras/x86_64/Packages/

访问 KVM 客端的另一个选择

假如你要连接到一台 QEMU 虚拟机器(KVM 客端),你可按照 Spice-libvirt 的指引采用 spice

Translation of revision 117--


2023-09-11 07:23