什麼是 VNC(Virtual Network Computing)
通常在管理 Linux 系統時我們不會真的跑到系統前面去做實際的登入操作,而是會透過網路使用遠端的方式去登入 Linux 的系統.而一般遠端的管理程式最安全也最方便的就屬於 ssh(Secure Shell) 了,它使用了加密安全連線的機制.但是他只提供了文字介面的操作雖然有 X11 forwarding 的方式但這都僅限至於遠端也是使用 Linux 的 X-window 系統才可以如果 Windows 系統也要透過 ssh 去連接 x-window 還需要額外的程式 x win32.
如果非要在 windows 下用到 X-window 時,那在 Linux 系統下有類似 Windows 的遠端桌面的方式去連接系統嗎?有的,方式還蠻多種類的,這邊先介紹一般常用的 VNC(Virtual Network Computing).他是一套可以遠端遙控 Linux 桌面的服務.
一般的 Linux 版本都將 VNC(Virtual Network Computing) 當作標準的套件通常可以在 Linux 光碟可以找到.如果沒有關係可以到 VNC 的官方網站下載 http://www.realvnc.com 它不僅僅可以透過 VNC viewer 還可以直接透過 Web Browser 瀏覽器(IE,FireFox,Chrome..)的方式去連接.
檢查你的系統是否有提供 VNC(Virtual Network Computing) 的套件
[root@benjr ~] # rpm -aq | grep -i vnc vnc-server-version vnc-version
如果沒有,沒有關係可以到 VNC 的官方網站 下載
VNC (Virtual Network Computing) 的設定檔
VNC 預設的設定檔存放在 /etc/sysconfig/vncservers ,預設就已經寫好了一個 VNC 連接,只需要將 "#" 移除即可!!
[root@benjr ~] # vi /etc/sysconfig/vncservers VNCSERVERS="2:root" VNCSERVERARGS[2]="-genometry 800×600"
VNC 在使用時可以透過兩種方式 1.vncviewer 和 2.Web Browser 瀏覽器(IE,FireFox,Chrome..) 而且這兩種方式所使用的埠 (port) 也不同.
- TCP 5900 – 專門給 vncviewer 使用者所連接的埠 (port)
- TCP 5800 – 透過 HTTP 連線(如:IE,FireFox,Chrome..)的就是使用這一個埠 (port)
設定檔中的 VNCSERVERS="2:root" 的意思是說,我們要啟動一個 VNC 在 port 5900+2 即 5902(vncviewer ) 的意思和 port 5800+2 即 5802(Web Browser 瀏覽器).使用者為 root.可為系統上的任一使用者.
雖然預設使用了VNCSERVERARGS[2]="-genometry 800×600 -nolisten tcp -nohttpd -localhost" 但基本上我們只需要 VNCSERVERARGS[2]="-genometry 800×600" 即可,這邊說明一下各參數的用法與時機.
- -genometry 800×600
使用 VNC 時 x-windows 的解析度為 800×600,這都可以自訂,只要是在合理範圍皆可(640×480,800×600,1024×768…) - -nolisten tcp
不使用 TCP 的方式與 VNC server 連線 - -nohttpd
加入這參數後無法使用 Web Browser 瀏覽器 (IE,FireFox,Chrome..) 連接到該 VNC. - -localhost
如果你只允許 local (127.0.0.1) 來連結 VNC 請加入這設定.不過大部分的應用在 SSH port 的轉送
共多參數請參考 VNC 的官方網頁或是用 #man vncserver
VNC (Virtual Network Computing) 的 password
基本上 VNC 的 password 無法使用 /etc/passwd,所以要自行設定 VNC 的密碼.
[root@benjr ~] # vncpasswd Password: Verify:
目前我登入的使用者為 root 所以現在他所建立的密碼為 root 使用者.如果要設定其他使用者請 #su – user 轉換後再設定.
啟動 VNC 的服務
[root@benjr ~]# service vncserver start
如果要讓每次開機時都能啟動 vnc server,請鍵入下面指令.
[root@benjr ~]# chkconfig vncserver on [root@benjr ~]# netstat -tulnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:5802 0.0.0.0:* LISTEN 15287/Xvnc tcp 0 0 0.0.0.0:5902 0.0.0.0:* LISTEN 15287/Xvnc
說明:
- VNC Viewer
Port 5902 是給 VNC Viewer 使用.在 Linux 下可以直接使用[root@unsvr root]# vncviewer
假設我的 VNC Server IP 為:192.8.1.115
不過 Windows 預設並沒有安裝 vncviwer ,所以需要至 http://www.realvnc.com 下載. - Web based
Port 5802 是給 Web Browser 使用. 不想下載一堆有的沒有的,可以考慮使用 web browser的方式來連結.不過前提是需要加裝 Java Runtime Environment (JRE) http://www.java.com 在 Windows 底下開 browser,輸入網址,再加上 port number : 5802 就可以透過 Web 方式連結.咦!!怎麼桌面和我們用的不同,原來系統預設使用最精簡的桌面程式 twm(Tab Window Manager),下面會介紹如何改成其他桌面程式(GNOME 或是 KDE).
note :在 Linux 要用 Java 還需要安裝 java runtime environment ,你可以在 java 的安裝目錄下 /usr/jave/plugin/i386/ns7/ 找到 libjavaplugin_oji.so 檔.在 ~/.mozilla/plugins/ 目錄裡做一個符號連結到 libjavaplugin_oji.so,不可以直接複製。
[root@benjr ~]# cd ~/.mozilla/plugins/ [root@benjr ~]# ln -s /usr/java/jre1.5.0_04/plugin/i386/ns7/libjavaplugin_oji.so
可以參考 Mozilla 的網站
指定用哪種桌面
指定用哪種桌面是設定在 $HOME/.vnc/xstartup 裡,剛剛我範例的使用者皆為 root 所以這個檔案存放在 /root/.vnc/xstartup ,其他非 root 使用者家目錄皆在 /home
- TWM:
[root@benjr ~]# vi /root/.vnc/xstartup #!/bin/sh [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic & xterm -geometry 80×24+10+10 -ls -title "$VNCDESKTOP Desktop" & twm &
預設的 XWindow為 twm(Tab Window Manager) 如果有需要其他的請設定成下面幾種的桌面.
- GNOME :
[root@benjr ~]# vi /root/.vnc/xstartup #!/bin/sh [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic & xterm -geometry 80×24+10+10 -ls -title "$VNCDESKTOP Desktop" & gnome-session &
- KDE :
[root@benjr ~]# vi /root/.vnc/xstartup #!/bin/sh [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic & xterm -geometry 80×24+10+10 -ls -title "$VNCDESKTOP Desktop" & startkde &
3 thoughts on “Linux – VNC(Virtual Network Computing)”