採用 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,你必須將 nx 及 bob 這些用戶加進該行:
AllowUsers nx bob
這樣便完成了。你的遠端機器已準備好接納 NX 客端登入。
3. 安裝 NX 的客戶端
你可擇選安裝 opennx 或來自 NoMachine 的 nxclient。 |
3.1. 安裝 opennx
註:如果你已經安裝了 NoMachine 的 nxclient,你必須先把它解除安裝,然後才安裝 opennx。客戶端的現有設定應該會留下來給 opennx。 |
CentOS-6 用的 Opennx 已收錄在 centos-extras 軟件庫。要進行安裝,請在客端機器上執行這個指令:
[root@client ~]# yum install opennx
開啟 NX 連線精靈。輸入 Session「工作階段」名稱、hostname「主機名稱」(或 IP 位址)、Port「連接埠」號碼,並選取你的 Type of Internet Connection「互聯網連線類型」,然後選擇 Next「下一步」。
選擇 connection type「連線類型」、你想使用的 desktop「桌面」系統、與及 size of the desktop「桌面大小」。完成後選擇 Next「下一步」。
在下一個對話視窗,確保 Enable SSL encryption of all traffic「啟用以 SSL 加密所有通訊」已獲選取,然後選擇 Next「下一步」。
選擇你是否需要 Create shortcut on desktop「在桌面上建立捷徑」 ,然後選擇 Show the Advanced Configuration dialog「顯示進段設定對話方塊」並選擇 Finish「完成」。
在進階設定對話方塊的 General「一般」頁籤內,你應該看見你所輸入的項目及一個 Key...「金鑰…」按鍵。你須要 ssh 到將要連線的伺服器,然後進入 /etc/nxserver/ 這個目錄並開啟 client.id_dsa.key 這個檔案(你必項是 root 用戶才能開啟這個檔案)。複製所有文字(包括 BEGIN DSA PRIVATE KEY 及 END DSA PRIVATE KEY 這兩行)。按 Key...「金鑰…」按鍵,刪除原有的文字,然後將伺服器上 client.id_dsa.key 的資訊貼在 Key Management「管理金鑰」文字方塊內,接著選擇 Save「儲存」。你然會返回 Session properties「工作階段屬性」對話方塊。選擇 OK「確定」後便大功告成。
- 你現在應該能夠透過客戶端連線到伺服器並開啟你的桌面。
3.2. 安裝 NoMachine 的 nxclient
NoMachine 不客許發行他們的客戶端,因此你必須從他們的網站下載。客戶端備有 Linux、Mac OSX、Solaris 及 微軟 Windows 版本。
註: 3.5.x、3.1.x 及 3.0.x 版的 Nomachine 客戶端可以配合 CentOS 所提供的 FreeNX/NX 方案。 |
請選擇適合你的操作系統的客戶端,按照 No Machine 網站上的指引安裝在你的操作系統上,然後利用以下的指示來連線到你的 NX 伺服器。
開啟 NX 連線精靈。輸入Session「工作階段」名稱、hostname「主機名稱」(或 IP 位址)、Port「連接埠」號碼,並選取你的 Type of Internet Connection「互聯網連線類型」,然後選擇 Next「下一步」。
選擇 connection type「連線類型」、你想使用的 desktop「桌面」系統、與及 size of the desktop「桌面大小」。如果你想以 SSL 加密,切勿選取「停用加密」這個項目。使用 SSL 除了將交通加密外,更會只採用你指定的 SSL 連接埠來連線。意思就是由防火牆外連線時,你只須開啟 SSL 連線埠給對內的交通。完成後請按 Next「下一步」。
選擇你是否需要 Create shortcut on desktop「在桌面上建立捷徑」,然後選擇 Show the Advanced Configuration dialog「顯示進階設定對話方塊」並選擇 Finish「完成」。
在進階設定對話方塊的 General「一般」頁籤內,你應該看見你所輸入的項目及一個 Key...「金鑰…」按鍵。你須要 ssh 到將要連線的伺服器,然後進入 /etc/nxserver/ 這個目錄並開啟 client.id_dsa.key 這個檔案(你必項是 root 用戶才能開啟這個檔案)。複製所有文字(包括 BEGIN DSA PRIVATE KEY 及 END DSA PRIVATE KEY 這兩行)。按 Key...「金鑰…」按鍵,刪除原有的文字,然後將伺服器上 client.id_dsa.key 的資訊貼在 Key Management「管理金鑰」文字方塊內,接著選擇 Save「儲存」。
你現在應該能夠透過客戶端連線到伺服器並開啟你的桌面。請參閱 NoMachine 支援來取得更多資訊。
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--