Differences between revisions 24 and 25

Deletions are marked like this. Additions are marked like this.
Line 211: Line 211:
/!\ 以下資訊只供 CentOS 5.x 應用。請你'''切勿'''在 CentOS 6.x 上如此做,它有可能導致 ssh 無法存取該台機器。
Line 257: Line 259:
請記,要是你利用 sshd_config 內的 !AllowUsers 或其它存取控制系統來管理誰能登入機器內,務請你把 nx 這個用戶加進列表中。 再重複一遍,加入 127.0.0.1 聆聽位址這一步只適用於 CentOS 5.x。'''切勿'''在 CentOS 6.x 上如此做。

還有
請記住,(不論是哪一版的 CentOS),要是你利用 sshd_config 內的 !AllowUsers 或其它存取控制系統來管理誰能登入機器內,務請你把 nx 這個用戶加進列表中。
Line 275: Line 279:
~-Translation of revision 110-- ~-Translation of revision 111--

採用 FreeNX 的 NX 伺服器

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

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

1. 在伺服器上安裝 NX/FreeNX

現時 CentOS Extras 軟件庫內備有供 CentOS 5 及 CentOS 6 用的 NX 和 FreeNX 套件。

要安裝穩定版的 NX/FreeNX,請在伺服器上執行這個指令:

[root@server ~]# yum install nx freenx 

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

2. 設置

freenx-0.7.3-9.el5.centos 或 freenx-0.7.3-9.el6.centos 這兩個 freenx 套件都附帶有 /etc/nxserver/node.conf 檔。假如你擁有舊版本,你必須透過複製 node.conf.sample 檔來建立它:

[root@server ~]# cd /etc/nxserver ; cp node.conf.sample node.conf 

NX 採用 ssh 協定來連線到遠端服務,但我們仍須把你的用戶名稱加進 NX 的用戶名單內:

請確定 /etc/nxserver/node.conf 檔案內包含以下一行(檢查該行沒有被注釋掉):

ENABLE_PASSDB_AUTHENTICATION="1" 

請把自己加進 nxserver 資料庫內。假設你的用戶名稱是 bob,請以 root 的身份執行以下指令:

[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 

這樣便完成了。你的遠端機器已準備好接納 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「下一步」

opennx2.png


  • 選擇 connection type「連線類型」、你想使用的 desktop「桌面」系統、與及 size of the desktop「桌面大小」。完成後選擇 Next「下一步」

opennx3.png


  • 在下一個對話視窗,確保 Enable SSL encryption of all traffic「啟用以 SSL 加密所有通訊」已獲選取,然後選擇 Next「下一步」


  • 選擇你是否需要 Create shortcut on desktop「在桌面上建立捷徑」 ,然後選擇 Show the Advanced Configuration dialog「顯示進段設定對話方塊」並選擇 Finish「完成」

opennx5.png


  • 在進階設定對話方塊的 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「儲存」。你然會返回 Session properties「工作階段屬性」對話方塊。選擇 OK「確定」後便大功告成。

opennx6.png 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 伺服器。


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

nxclient1new.jpg


  • 選擇 connection type「連線類型」、你想使用的 desktop「桌面」系統、與及 size of the desktop「桌面大小」。如果你想以 SSL 加密,切勿選取「停用加密」這個項目。使用 SSL 除了將交通加密外,更會只採用你指定的 SSL 連接埠來連線。意思就是由防火牆外連線時,你只須開啟 SSL 連線埠給對內的交通。完成後請按 Next「下一步」

nxclient2new.jpg


  • 選擇你是否需要 Create shortcut on desktop「在桌面上建立捷徑」,然後選擇 Show the Advanced Configuration dialog「顯示進階設定對話方塊」並選擇 Finish「完成」

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「儲存」

nxclient4new.jpg nxclient5new.jpg


  • 你現在應該能夠透過客戶端連線到伺服器並開啟你的桌面。請參閱 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 能夠解決這個問題。請看以下的討論:

http://www.centos.org/modules/newbb/viewtopic.php?topic_id=14363&forum=38

$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=""

http://www.centos.org/modules/newbb/viewtopic.php?topic_id=29356&forum=37

無法連線:

如果 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 111--

zh-tw/HowTos/FreeNX (last edited 2013-04-12 14:35:11 by TimothyLee)