[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 

其他套件亦會根據依賴性關系而被安裝。

<bgcolor="#fffff0">註:有時候,有些問題會導致你須要在 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