## 11.4 華麗的圖形接口: VNC 服務器
就如同剛剛上頭講到的,使用 xdmcp 可能會啟動多個不同的埠口,導致防火墻設定上面比較困擾些。那有沒有簡單一點的圖形接口連接方式? 其實還有很多啦,在這里我們先來講一個比較簡單的,那就是 VNC (Virtual Network Computing) 這玩意兒啦!([注6](#ps6))
* * *
### 11.4.1 預設的 VNC 服務器:使用 twm window manager
VNC server 會在服務器端啟動一個監聽用戶要求的端口,一般端口號碼在 5901 ~ 5910 之間。當客戶端啟動 X server 聯機到 5901 之后, VNC server 再將一堆預先設定好的 X client 透過這個聯機傳遞到客戶端上,最終就能夠在客戶端顯示服務器的圖形接口了。
不過需要注意的是,預設的 VNC server 都是獨立提供給『單一』一個客戶端來聯機的,因此當你要使用 VNC 時, 再聯機到服務器去啟動 VNC server 即可。所以,一般來說, VNC server 都是使用手動啟動的,然后使用完畢后, 再將 VNC server 關閉即可。整個作法其實很簡單喔!你可以這樣作:
```
[root@www ~]# vncserver [:號碼] [-geometry 分辨率] [options]
[root@www ~]# vncserver [-kill :號碼]
選項與參數:
:號碼 :就是將 VNC server 開在哪個埠口,如果是 :1 則代表 VNC 5901 埠口
-geometry :就是分辨率,例如 1024x768 或 800x600 之類的
options :其他 X 相關的選項,例如 -query localhost 之類的
-kill :將已經啟動的 VNC 埠口刪除!依據身份控制喔。
[root@www ~]# yum install tigervnc-server
# 這個是必須要的服務器軟件,注意軟件的名稱喔!與之前的版本不同!
# 將 VNC server 啟動在 5903 埠口
[root@www ~]# vncserver :3
You will require a password to access your desktops.
Password: <==輸入 VNC 的聯機密碼,這是建立 VNC 時所需要的
Verify: <==再輸入一次相同的密碼
xauth: creating new authority file /root/.Xauthority
New 'www.centos.vbird:3 (root)' desktop is www.centos.vbird:3
Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/www.centos.vbird:3.log
[root@www ~]# netstat -tulnp | grep X
tcp 0 0 0.0.0.0:5903 0.0.0.0:* LISTEN 4361/Xvnc
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 1755/Xorg
tcp 0 0 0.0.0.0:6003 0.0.0.0:* LISTEN 4361/Xvnc
tcp 0 0 :::6000 :::* LISTEN 1755/Xorg
tcp 0 0 :::6003 :::* LISTEN 4361/Xvnc
# 已經啟動所需要的埠口啰!
```
在上述的指令操作中,你要知道的幾個項目是:
1. 密碼至少需要六個字符
2. 依據使用 vncserver 的身份,將剛剛建立的密碼放置于該賬號家目錄下。例如上述的身份是使用 root 身份,因此密碼文件會放在 /root/.vnc/passwd 這個檔案中但是若該檔案已經存在,則不會出現建立密碼的畫面。
3. 當客戶端聯機成功后,服務器將會傳送 /root/.vnc/startx 內的 X client 給客戶端喔!
那如果你想要修改 VNC 密碼呢?很簡單,那就使用 vncpasswd 吧!
```
[root@www ~]# ls -l /root/.vnc/passwd
-rw-------. 1 root root 8 Jul 26 15:08 /root/.vnc/passwd
[root@www ~]# vncpasswd
Password: <==就是這里開始輸入新的密碼啊!
Verify:
[root@www ~]# ls -l /root/.vnc/passwd
-rw-------. 1 root root 8 Jul 26 15:15 /root/.vnc/passwd
# 看吧!時間有更新喔!這個檔案的內容更動過啰!
```
接下來開始放行 5903 這個埠口的聯機防火墻規則吧!因為預計可能會開放 11 個 VNC 的埠口,所以干脆一口氣開放 11 個埠口吧!
```
[root@www ~]# vim /usr/local/virus/iptables/iptables.allow
iptables -A INPUT -i $EXTIF -s 192.168.100.0/24 -p tcp --dport 5900:5910 -j ACCEPT
[root@www ~]# /usr/local/virus/iptables/iptables.rule
[root@www ~]# iptables-save
-A INPUT -s 192.168.100.0/24 -i eth0 -p tcp -m tcp --dport 5900:5910 -j ACCEPT
# 要看得到上面這行才 OK 喔!
```
* * *
### 11.4.2 VNC 的客戶端聯機軟件
與 xdmcp 很類似啦, VNC 客戶端在 Linux 系統上面有默認的軟件,但是在 Windows 系統上面則必須要額外安裝其他軟件。 我們先來談談 Linux 的 VNC 用戶軟件吧!
* Linux 客戶端程序: vncviewer
用在 Linux 客戶端的 VNC 程序,那就是 vncviewer。只是,這個軟件默認沒有安裝,所以你得要使用 yum 安裝完畢后再來聯機吧!不過一樣要注意,服務器端的防火墻一樣要設定妥當喔!然后開始在客戶端的圖形接口上執行底下數據:
```
[root@clientlinux ~]# yum install tigervnc
[root@clientlinux ~]# vncviewer 192.168.10.254:3
# 這個指令請一定一定要在圖形接口上面執行才行喔!很重要!別忘了!
```

圖 11.4-1、在 Linux 客戶端執行 vncviewer 程序示意
在上圖當中輸入剛剛的 root 的 VNC 聯機密碼,請注意喔,是 VNC 的聯機密碼,而不是 root 的登入密碼! 這兩者是差很多的!也由于啟動 VNC 的身份是 root ,因此這里才使用 root 的 VNC 聯機密碼。 所以,很多時刻,我們都是建議使用一般身份來啟動 VNC server 的啦!當你輸入正確的 VNC 聯機密碼后, 會出現如下的圖示啰:

圖 11.4-2、在 Linux 客戶端執行 vncviewer 程序示意
與以前的 VNC server 較大的差異,在 CentOS 6.x 當中,tigervnc-server 這套軟件會主動的依據服務器端的圖形接口登入方式給予正確的圖形顯示接口,而不是以前那樣給予一個丑丑的 twm 而已! 這樣我們就可以減少還得要修改一些有的沒有的配置文件了!真是棒! 聯機成功后,請在客戶端關閉這個 vncviewer 的聯機,因為接下來我們要準備由 Windows 聯機到服務器的 port 5903 啰!
* Windows 客戶端程序: realvnc
Windows 底下可用的 vnc client 軟件不少,但是鳥哥比較熟悉的是 realvnc 這家公司出品的 GNU 的自由軟件! 你可以在底下的連結下載到最簡單的版本,是不用錢的自由軟件版本喔!(鳥哥僅下載不用安裝的 viewer 版本而已!)
* [http://www.realvnc.com/download.html](http://www.realvnc.com/download.html)
直接執行 vnc-viewer 軟件,然后就會看到如下的畫面:

圖 11.4-3、Windows Real VNC 客戶端聯機示意圖
如上圖所示,你在 server 字段填上 IP:port 的數據即可,然后按下『OK』吧!

圖 11.4-4、Windows Real VNC 客戶端聯機示意圖
由于 VNC server 需要的僅是聯機的 VNC 密碼而已,因此上圖中的 Username 可以不用填,老實說,這個程序它也不會讓你填~ 呵呵!填完按下『OK』即可!接下來就會出現正確的畫面啰!

圖 11.4-5、Windows Real VNC 客戶端聯機示意圖
* * *
### 11.4.3 VNC 搭配本機的 Xdmcp 畫面
如果因為某些特殊因素,你得要使用 VNC 來搭配 xdmcp 的輸出時,那就直接在服務器透過底下的指令來處理即可! 要注意喔,你必須要已經啟動了 xdmcp 了喔!而且,我們底下使用 student 的身份來啟動這個 VNC 吧!
```
# 1\. 要確定 xdmcp 已經啟動了才可以:
[root@www ~]# netstat -tlunp | grep 177
udp 0 0 0.0.0.0:177 0.0.0.0:* 1734/gdm-binary
# OK 的!確實有啟動的啦!如果沒有看到 177 的話,回到 [11.3](#xdmcp) 去處理處理
# 2\. 切換成 student,并且啟動 VNC server 在 :5
[root@www ~]# su - student
[student@www ~]$ vncserver :5 -query localhost
You will require a password to access your desktops.
Password:
Verify:
xauth: creating new authority file /home/student/.Xauthority
New 'www.centos.vbird:5 (student)' desktop is www.centos.vbird:5
Creating default startup script /home/student/.vnc/xstartup
Starting applications specified in /home/student/.vnc/xstartup
Log file is /home/student/.vnc/www.centos.vbird:5.log
# 3\. 取消 xstartup 的啟動內容
[student@www ~]$ vim /home/student/.vnc/xstartup
....(前面省略)....
#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm &
# 將這個檔案的內容,全部都加上 # 批注掉
# 4\. 重新啟動 vncserver 喔!
[student@www ~]$ vncserver -kill :5
[student@www ~]$ vncserver :5 -query localhost
```
接下來請使用 root 的身份加入 5905 的端口防火墻規則,然后自行使用 Linux 的 vncviewer 或 Windows 的 RealVNC 來聯機,你就會發現如下的畫面:

圖 11.4-6、透過 VNC 通道取得 xdmcp 畫面
我們這只 VNC 的聯機程序是 student 身份,但是我們卻可以透過 xdmcp 的登入功能來登入 root 身份喔! 因為在服務器上面的 Xvnc 程序是 student 擁有,這樣會比較好啦!了解呼?
* * *
### 11.4.4 開機就啟動 VNC server 的方法
請注意,你不要將 vncserver 的指令寫入在 /etc/rc.d/rc.local 中,否則可能會產生 localhost 無法登入的問題。 那該如何讓你的 VNC server 在一開機就啟動而不須要登入執行指令呢?可以的,但是你得要修改一下配置文件。 我們底下使用 student 的身份啟動 VNC server,而啟動的方式為使用 xdmcp 登入畫面,啟動的埠口就定在 5901 好了。 那你應該這樣作:
```
[root@www ~]# vim /etc/sysconfig/vncservers
VNCSERVERS="1:student"
VNCSERVERARGS[1]="-query localhost"
# 上述兩行的 1 指的就是那個埠口 5901 喔!要注意!
[root@www ~]# /etc/init.d/vncserver restart
[root@www ~]# chkconfig vncserver on
```
有夠好簡單吧!這樣每次開機就搞定你的 VNC server 啰!
* * *
### 11.4.5 同步的 VNC :可以透過圖示同步教學
另外,有些朋友一定會覺得奇怪,那就是,為甚么我的 VNC 服務器的 server / client 端畫面并不是同步的呢? 這是因為 Linux 本身提供多個 VNC server ,她們是各自獨立的,所以當然就不會與 tty7 的畫面同步了。 但是如果你想要與 Linux 的 tty7 同步的話,可以利用 VNC 釋出的給 X Server 使用的模塊來加以設定即可。
那使用這個模塊有甚么好處啊?就是可以讓兩個圖形接口在 server/client 都是一樣的, 所以,如果你想要教你的朋友你是如何設定的,那就可以透過這個機制來處理,你的朋友在遠程就能夠知道你一步一步進行的過程! 這樣很不賴吧!詳細的作法可以參考底下的連結:
* [http://phorum.study-area.org/viewtopic.php?t=25713](http://phorum.study-area.org/viewtopic.php?t=25713)
我們也來實做一下吧 (在 CentOS 6.x 當中并沒有 xorg.conf 這個配置文件喔!所以,如果你要使用這些數據的話, 恐怕得要自行使用 X -configure 去建置 xorg.conf 后,再挪到 /etc/X11/ 去,然后才改的到設定!):
```
[root@www ~]# yum install tigervnc-server-module
[root@www ~]# vim /etc/X11/xorg.conf
Section "Screen"
Identifier "Screen0"
Device "Videocard0"
DefaultDepth 24
# VBird
Option "passwordFile" "/home/student/.vnc/passwd"
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
# VBird
Section "Module"
Load "vnc"
EndSection
# 假設你的 vnc 密碼檔案放置在 /home/student/.vnc/passwd 里頭,
# 這個時候就得要將密碼文件內容寫到 Screen 這個 section 當中了
[root@www ~]# init 3 ; init 5
[root@www ~]# netstat -tlunp | grep X
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 7445/Xorg
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 7445/Xorg
tcp 0 0 :::6000 :::* LISTEN 7445/Xorg
# 注意看喔!這幾個 port 啟動的 PID 都一樣喔!所以會啟動一個 port 5900 啰!
```
之后你可以使用『 vncviewer 192.168.100.254 』來聯機即可,不需要加上 :0 之類的埠口。 然后你可以看一下客戶端與服務器端的圖形接口,你會發現到兩者移動鼠標時,兩者的畫面會同步運作喔! 非常有趣呢!只不過這個動作還是只允許一條 VNC 聯機,不能讓所有客戶端都連到 port 5900 ,這真是太可惜了!
* * *
- 鳥哥的Linux私房菜:服務器架設篇 第三版
- 第一部份:架站前的進修專區
- 作者序
- 第一章、架設服務器前的準備工作
- 1.1 前言: Linux 有啥功能
- 1.2 基本架設服務器流程
- 1.3 自我評估是否已經具有架站的能力
- 1.4 本章習題
- 第二章、基礎網絡概念
- 2.1 網絡是個什么玩意兒
- 2.2 TCP/IP 的鏈結層相關協議
- 2.3 TCP/IP 的網絡層相關封包與數據
- 2.4 TCP/IP 的傳輸層相關封包與數據
- 2.5 連上 Internet 前的準備事項
- 2.6 重點回顧:
- 2.7 本章習題
- 2.8 參考數據與延伸閱讀
- 第三章、局域網絡架構簡介
- 3.1 局域網絡的聯機
- 3.2 本書使用的內部聯機網絡參數與通訊協議
- 第四章、連上 Internet
- 4.1 Linux 連上 Internet 前的注意事項
- 4.2 連上 Internet 的設定方法
- 4.3 無線網絡--以筆記本電腦為例
- 4.4 常見問題說明
- 4.5 重點回顧
- 4.6 本章習題
- 4.7 參考數據與延伸閱讀
- 第五章、 Linux 常用網絡指令
- 5.1 網絡參數設定使用的指令
- 5.2 網絡偵錯與觀察指令
- 5.3 遠程聯機指令與實時通訊軟件
- 5.4 文字接口網頁瀏覽
- 5.5 封包擷取功能
- 5.6 重點回顧
- 5.7 本章習題
- 5.8 參考數據與延伸閱讀
- 第六章、 Linux 網絡偵錯
- 6.1 無法聯機原因分析
- 6.2 處理流程
- 6.3 本章習題
- 6.4 參考數據與延伸閱讀
- 第二部分:主機的簡易資安防護措施
- 第七章、網絡安全與主機基本防護:限制端口, 網絡升級與 SELinux
- 7.1 網絡封包聯機進入主機的流程
- 7.2 網絡自動升級軟件
- 7.3 限制聯機埠口 (port)
- 7.4 SELinux 管理原則
- 7.5 被攻擊后的主機修復工作
- 7.6 重點回顧
- 7.7 課后練習
- 7.8 參考數據與延伸閱讀
- 第八章、路由觀念與路由器設定
- 8.1 路由
- 8.2 路由器架設
- 8.3 動態路由器架設:quagga (zebra + ripd)
- 8.4 特殊狀況:路由器兩邊界面是同一個 IP 網段: ARP Proxy
- 8.5 重點回顧
- 8.6 本章習題
- 8.7 參考數據與延伸閱讀
- 第九章、防火墻與 NAT 服務器
- 9.1 認識防火墻
- 9.2 TCP Wrappers
- 9.3 Linux 的封包過濾軟件:iptables
- 9.4 單機防火墻的一個實例
- 9.5 NAT 服務器的設定
- 9.6 重點回顧
- 9.7 本章習題
- 9.8 參考數據與延伸閱讀
- 第十章、申請合法的主機名
- 10.1 為何需要主機名
- 10.2 注冊一個合法的主機名
- 10.3 重點回顧
- 10.4 本章習題
- 10.5 參考數據與延伸閱讀
- 第三部分:局域網絡內常見的服務器架設
- 第十一章、遠程聯機服務器SSH / XDMCP / VNC / RDP
- 11.1 遠程聯機服務器
- 11.2 文字接口聯機服務器: SSH 服務器
- 11.3 最原始圖形接口: Xdmcp 服務的啟用
- 11.4 華麗的圖形接口: VNC 服務器
- 11.5 仿真的遠程桌面系統: XRDP 服務器
- 11.6 SSH 服務器的進階應用
- 11.7 重點回顧
- 11.8 本章習題
- 11.9 參考數據與延伸閱讀
- 第十二章、網絡參數控管者: DHCP 服務器
- 12.1 DHCP 運作的原理
- 12.2 DHCP 服務器端的設定
- 12.3 DHCP 客戶端的設定
- 12.4 DHCP 服務器端進階觀察與使用
- 12.5 重點回顧
- 12.6 本章習題
- 12.7 參考數據與延伸閱讀
- 第十三章、文件服務器之一:NFS 服務器
- 13.1 NFS 的由來與其功能
- 13.2 NFS Server 端的設定
- 13.3 NFS 客戶端的設定
- 13.4 案例演練
- 13.5 重點回顧
- 13.6 本章習題
- 13.7 參考數據與延伸閱讀
- 第十四章、賬號控管: NIS 服務器
- 14.1 NIS 的由來與功能
- 14.2 NIS Server 端的設定
- 14.3 NIS Client 端的設定
- 14.4 NIS 搭配 NFS 的設定在叢集計算機上的應用
- 14.5 重點回顧
- 14.6 本章習題
- 14.7 參考數據與延伸閱讀
- 第十五章、時間服務器: NTP 服務器
- 15.1 關于時區與網絡校時的通訊協議
- 15.2 NTP 服務器的安裝與設定
- 15.3 客戶端的時間更新方式
- 15.4 重點回顧
- 15.5 本章習題
- 15.6 參考數據與延伸閱讀
- 第十六章、文件服務器之二: SAMBA 服務器
- 16.1 什么是 SAMBA
- 16.2 SAMBA 服務器的基礎設定
- 16.3 Samba 客戶端軟件功能
- 16.4 以 PDC 服務器提供賬號管理
- 16.5 服務器簡單維護與管理
- 16.6 重點回顧
- 16.7 本章習題
- 16.8 參考數據與延伸閱讀
- 第十七章、區網控制者: Proxy 服務器
- 17.1 什么是代理服務器 (Proxy)
- 17.2 Proxy 服務器的基礎設定
- 17.3 客戶端的使用與測試
- 17.4 服務器的其他應用設定
- 17.5 重點回顧
- 17.6 本章習題
- 17.7 參考數據與延伸閱讀
- 第十八章、網絡驅動器裝置: iSCSI 服務器
- 18.1 網絡文件系統還是網絡驅動器
- 18.2 iSCSI target 的設定
- 18.3 iSCSI initiator 的設定
- 18.4 重點回顧
- 18.5 本章習題
- 18.6 參考數據與延伸閱讀
- 第四部分:常見因特網服務器架設
- 第十九章、主機名控制者: DNS 服務器
- 19.1 什么是 DNS
- 19.2 Client 端的設定
- 19.3 DNS 服務器的軟件、種類與 cache only DNS 服務器設定
- 19.4 DNS 服務器的詳細設定
- 19.5 協同工作的 DNS: Slave DNS 及子域授權設定
- 19.6 DNS 服務器的進階設定
- 19.7 重點回顧
- 19.8 本章習題
- 19.9 參考數據與延伸閱讀
- 第二十章、WWW 伺服器
- 20.1 WWW 的簡史、資源以及伺服器軟體
- 20.2 WWW (LAMP) 伺服器基本設定
- 20.3 Apache 伺服器的進階設定
- 20.4 登錄檔分析以及 PHP 強化模組
- 20.5 建立連線加密網站 (https) 及防砍站腳本
- 20.6 重點回顧
- 20.7 本章習題
- 20.8 參考資料與延伸閱讀
- 第二十一章、文件服務器之三: FTP 服務器
- 21.1 FTP 的數據鏈路原理
- 21.2 vsftpd 服務器基礎設定
- 21.3 客戶端的圖形接口 FTP 聯機軟件
- 21.4 讓 vsftpd 增加 SSL 的加密功能
- 21.5 重點回顧
- 21.6 本章習題
- 21.7 參考數據與延伸閱讀
- 第二十二章、郵件服務器: Postfix
- 22.1 郵件服務器的功能與運作原理
- 22.2 MTA 服務器: Postfix 基礎設定
- 22.3 MRA 服務器: dovecot 設定
- 22.4 MUA 軟件:客戶端的收發信軟件
- 22.5 郵件服務器的進階設定
- 22.6 重點回顧
- 22.7 本章習題
- 22.8 參考數據與延伸閱讀