VNC 是用來顯示在另一台電腦上運行的 X 視窗工作階段。有異於一個遠端的 X 連線,xserver 是在遠端的電腦上運行,而不是在本地的工作台上。你的工作台(Linux 或 Windows)只是顯示遠端機器所顯示(真實或虛擬)的東西。
設定一個 vnc 伺服器有數個不同方法。這份教學文檔示範如何利用 CentOS 所提供的 vncserver 服務來設定 VNC。
1. 安裝所需的套件
伺服器的套件名叫 vnc-server。請執行 rpm -q vnc-server 這個指令。
它的輸出應該是 package vnc-server is not installed 或類似 vnc-server-4.0-11.el4。
假如伺服器未被安裝,請用這個指令來安裝它:yum install vnc-server。
客戶端的程式是 vnc。假若 rpm -q vnc 表示它未被安裝,你可以用 yum install vnc 這個指令來安裝它。
請安裝一個視窗管理員來取得一個正常的圖像式桌面。舉個例說,你可以用 yum groupinstall "GNOME Desktop Environment" 這個指令來安裝 Gnome 桌面及所需的套件。其它受歡迎的桌面環境包括 KDE 及 XFCE-4.4。XFCE 比 Gnome 及 KDE 更為輕型,而且已收錄在 extras 軟件庫內。

如果你採用 CentOS 6,該指令是 yum groupinstall Desktop
如果你採用 CentOS 5,yum groupinstall "GNOME Desktop Environment" 可能會投訴 libgaim.so.0 被遺漏了。這是一個已知的錯誤。詳情請參閱 CentOS-5 常見問題集。
如果你採用 CentOS 6,伺服器的名稱是 tigervnc-server 而不是 vnc-server。
2. 設定未加密的 VNC
我們會設置 VNC 給 3 位用戶。他們分別是 larry、moe 及 curly。
你須要執行下列步驟來設定你的 VNC 伺服器:
- 建立你的 VNC 用戶。
- 設定用戶的 VNC 密碼。
- 編輯伺服器的設定。
- 建立及自訂 xstartup 腳本。
- 啟動 VNC 服務。
- 測試每位 VNC 用戶。
- 設置 VNC 服務在開機時自動啟用。
- 加入選擇性的改動。
2.1. 建立你的 VNC 用戶
以 root 的身份:
- $ su -
- # useradd larry
- # useradd moe
- # useradd curly
- # passwd larry
- # passwd moe
- # passwd curly
複製代碼
2.2. 設定用戶的 VNC 密碼
登入每個戶口,並執行 vncserver並設定密碼。這樣做會建立一個 .vnc 目錄。
- [~]$ cd .vnc
- [.vnc]$ ls
- passwd
複製代碼
2.3. 編輯伺服器的設定
編輯 /etc/sysconfig/vncservers,並在檔案底部加入以下內容。
- VNCSERVERS="1:larry 2:moe 3:curly"
- VNCSERVERARGS[1]="-geometry 640x480"
- VNCSERVERARGS[2]="-geometry 640x480"
- VNCSERVERARGS[3]="-geometry 800x600"
複製代碼
Larry 及 Moe 將會有 640 乘 480 的畫面。Curly 將會有 800 乘 600 的畫面。
2.4. 建立 xstartup 腳本(在 CentOS 6 略過此步驟)
我們會透過以 root 的身份啟動及停止 vncserver 來建立 xstartup 腳本。
- # /sbin/service vncserver start
- # /sbin/service vncserver stop
複製代碼
登入每個戶口並編輯 xstartup 腳本。就以 Larry 為例,首先登入成為 larry。
- [~]$ cd .vnc
- [.vnc] ls
- mymachine.localnet:1.log passwd xstartup
複製代碼
編輯 xstartup。原有的應該看似:
- #!/bin/sh
- # Uncomment the following two lines for normal desktop:
- # unset SESSION_MANAGER
- # exec /etc/X11/xinit/xinitrc
- [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
- [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
- xsetroot -solid grey
- vncconfig -iconic &
- xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
- twm &
複製代碼
這加入下面這行來確定 xterm 會經常存在。假若你希望在 VNC 內執行用戶的正常視窗管理員,請按指示除去兩行的註釋符號。請注意,在一個解像度及色彩深度都可能被降低的 VNC 視窗內,整個桌面將會頗狹窄,及看起來怪怪的。如果你不除去那兩行的註釋,你的 VNC 視窗將會有班點底色。
- #!/bin/sh
- # 加入下面這行來確定 xterm 會經常存在。
- ( while true ; do xterm ; done ) &
- # Uncomment the following two lines for normal desktop:
- unset SESSION_MANAGER
- exec /etc/X11/xinit/xinitrc
- [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
- [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
- xsetroot -solid grey
- vncconfig -iconic &
- xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
- twm &
複製代碼
2.5. 啟動 VNC 伺服器
以 root 身份啟動 vncserver。
- # service vncserver start
複製代碼
2.6. 測試每位 VNC 用戶
2.6.1. 以支援 java 的瀏覽器進行測試
讓我們假設我們機器擁有 192.168.0.10 這個 IP 位址。連線到每個戶口的 URL 將會是:
- Larry 是 http://192.168.0.10:5801
- Moe 是 http://192.168.0.10:5802
- Curly 是 http://192.168.0.10:5803
複製代碼
連線到 http://192.168.0.10:5801 。一個 java 程式的視窗將會彈出,表示你要連線到機器的 1 號埠。擊按 [ok] 按鈕。輸入 larry 的 VNC 密碼,然後一個 640x480 視窗將會透過 larry 預設的視窗管理員被開啟出來。iptables 防火牆必須開放以上這些連接埠 5801、5802 及 5803 給客戶端的 IP 位址或子網絡。
2.6.2. 以 vnc 用戶端進行測試
- Larry 用: vncviewer 192.168.0.10:1
- Moe 用: vncviewer 192.168.0.10:2
- Curly 用: vncviewer 192.168.0.10:3
複製代碼
要以 vncviewer 測試 larry,執行 vncviewer 192.168.0.10:1。輸入 larry 的 VNC 密碼,然後一個採用 larry 的預設視窗管理員的 640x480 視窗將會打開。vncviewer 這個客戶端會連線到 590X 這個埠,當中 X 值等於 1、2、3 分別對應 larry、moe 及 curly,因此防火牆必須開放這些連接埠給客戶端的 IP 位址或子網絡。
2.6.3. 開機時啟動 vncserver
要在開機時啟動 vncserver,請輸入 /sbin/chkconfig vncserver on 這個指令。
VNC 的基本設定現在已經完成。以下部份是選擇性的改善方法來增強安全性及功能。
|