一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 3633|回复: 0
收起左侧

CentOS下安装FreeNX远程桌面实现远程控制

[复制链接]
发表于 2010-11-20 20:17 | 显示全部楼层 |阅读模式
采用 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 不客许发行他们的客户端,因此必须他们的网站下载。客户端备有 LinuxMac OSXSolaris微软 Windows 版本。

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





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




  • 打开 NX 连接向导。输入Session「工作阶段」名称、hostname「主机名称」(或 IP 地址)、Port「端口」号码,并选择你的 Type of Internet Connection「互联网连接类型」,然后选择 Next「下一步」

http://wiki.centos.org/HowTos/FreeNX?action=AttachFile&do=get&target=nxclient1new.jpg




  • 选择 connection type「连接类型」、你想使用的 desktop「桌面」系统、与及 size of the desktop「桌面尺寸」。如果你想以 SSL 加密,切勿选择「停用加密」这个项目。使用 SSL 除了将交通加密外,更会只采用你指定的 SSL 端口来连接。意思就是由防火墙外连接时,你只须打开 SSL 连接端口给对内的交通。完成后请按 Next「下一步」

http://wiki.centos.org/HowTos/FreeNX?action=AttachFile&do=get&target=nxclient2new.jpg





  • 选择你是否需要 Create shortcut on desktop「在桌面上创建捷径」,然后选择 Show the Advanced Configuration dialog「显示高级设置对话框」并选择 Finish「完成」

http://wiki.centos.org/HowTos/FreeNX?action=AttachFile&do=get&target=nxclient3new.jpg




  • 在高级设置对话框的 General「一般」页签内,你应该看见你所输入的项目及一个 Key...「金钥…」按键。你须要 ssh 到将要连接的服务器,然后进入 /etc/nxserver/ 这个目录并编辑 client.id_dsa.key 这个文件(你必项是 root 用户才能打开这个文件)。复制所有文字(包括 BEGIN DSA PRIVATE KEYEND DSA PRIVATE KEY 这两行)。按 Key...「金钥…」按键,删除原有的文字,然后将服务器上 client.id_dsa.key 的信息贴在 Key Management「管理金钥」文字方块内,接着选择 Save「存储」

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




  • 你现在应该能够通过客户端连接到服务器并打开你的桌面。请参阅 NoMachine 支持来取得更多信息。

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 现在将会能够连接。

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-6-2 15:23 , Processed in 0.044710 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表