2010年1月3日 星期日

[NX] nomachine set

*NX 是一個終端機及遠端存取的方案,它建基於 NoMachine 的企業級開源科技。
虧得那開發於 X 視窗系統上的超卓壓縮、彈性工作階段、及資源管理技術,再整合 Linux/Unix 世界內強大的分享、列印及音訊功能,NX 令你跨網絡連線執行任何圖像應用程式時,倣如身處在 CentOS(伺服器)電腦面前。

*進行連線時,你需要有一台伺服器電腦(你將要連線及在其上開啟桌面的電腦),與及一台客戶端電腦(你將要用來對伺服器進行連線的電腦)。

*1. 在伺服器上安裝 NX/FreeNX現時 CentOS Extras 軟件庫內備有 NX 及 FreeNX 的套件。
要安裝穩定版的 NX/FreeNX,請在伺服器上執行這個指令:

yum install nx freenx

註:
有時候,有些問題會導致你須要在 NX 伺服器上同時安裝No Machine 客戶端。
如果你遇到問題,例如無法關閉客戶端,請下載最新的 No Machine Linux
客戶端 RPM,並將它安裝在你的 NX 伺服器上。這些問題在 NX > 3 及 freenx > 0.7 版本裡已經甚少出現。

2. 用金鑰驗證
註:雖然這部份是選擇性的,我們建議你實施用金鑰驗證。

複製一個最基本的 nxserver 設定檔:

cd /etc/nxserver ; cp node.conf.sample node.conf

如果你的機器連線到互聯網,你多數會想停用密碼驗證(這是個建議但並非必然)。編輯 /etc/ssh/sshd_config 檔並更改/加入下列數行:

PasswordAuthentication no
AllowUsers nx

請不要忘記在改動後重新啟動 sshd 常駐程式:

service sshd restart

根據預設值,當你嘗試連線到 NX 伺服器時,它會利用 nx 這個戶口進行 ssh 連線(透過金鑰驗證),但亦會嘗試在 ssh 內以你的用戶名稱及密碼連線到你要接觸的主機。由於我們已經停用 PasswordAuthentication(建議做法),我們須要利用 NX 資料庫來容許直通驗證。請確定 /etc/nxserver/node.conf 檔案內包含下列數行:

ENABLE_PASSDB_AUTHENTICATION="1"

接著為你自己建立一個 posix 戶口(透過 useradd/passwd 如果你仍未這樣做)。將這個新建立的用戶加進 nxserver 資料庫內:

nxserver --adduser myuser
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/myuser/.ssh/authorized_keys2
NX> 1001 Bye.
NX> 999 Bye

設定這個用戶的密碼:

nxserver --passwd myuser
NX> 100 NXSERVER - Version 1.5.0-60 OS (GPL)
New password:
Password changed.
NX> 999 Bye

切勿忘記將這個新用戶加進 sshd_config 檔的 AllowUsers 行內(例如:!AllowUsers nx myuser),然後載入 sshd(service sshd reload)。

3. 安裝 NoMachine 客戶端
NoMachine 不客許發行他們的客戶端,因此必須他們的網站下載。客戶端備有 Linux、Mac OSX、Solaris 及 微軟視窗版本。

註: 3.1.x 及 3.0.x 版的 Nomachine 客戶端已經被測試及似乎可以配合 CentOS 所提供的 FreeNX/NX 方案。如果你遇到問題,這裡是來自 no machine 的最新版 2.1.0 i386 客戶端,它亦能正常運作。

請選擇適合你的操作系統的客戶端,按照 No Machine 網站上的指引安裝在你的操作系統上,然後利用以下的指示來連線到你的 NX 伺服器。

*開啟 NX 連線精靈。輸入Session「工作階段」名稱、hostname「主機名稱」(或 IP 位址)、Port「連接埠」號碼,並選取你的 Type of Internet Connection「互聯網連線類型」,然後選擇 Next「下一步」。

*選擇 connection type「連線類型」、你想使用的 desktop「桌面」系統、與及 size of the desktop「桌面大小」。還有決定你是否需要 Encrypt all Traffic via SSL「透過 SSL 將所有交通加密」。使用 SSL 除了將交通加密外,更會只採用你指定的 SSL 連接埠來連線。意思就是由防火牆外連線時,你只須開啟 SSL 連線埠給對內的交通。完成後請按 Next「下一步」。

註:在較新的 NX 客戶端(> 3.0.0),這個核取方塊是用來停用 SSL 交通,因此如果你需要 SSL 加密,請勿選取這個方塊

*選擇你是否需要 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 的資訊貼在 DSA Key「DSA 金鑰」 文字方塊內(下面以黃色標示),接著選擇 Save「儲存」。

*選取 Advanced「進階」頁籤。我們建議你選用 Enable SSL Encryption of All Traffic「啟用以 SSL 加密所有流量」。

4. 疑難解答

利用微軟視窗的 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)

Vista 視窗上的 NX 客戶端高(100%)處理器負荷:

某些用戶報告 NoMachine NX 微軟視窗客戶端在 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 現在將會能夠連線。

沒有留言:

張貼留言