1,823 瀏覽數

Linux – VNC(Virtual Network Computing)

什麼是 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 桌面的服務.
vnc0
一般的 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) 也不同.

  1. TCP 5900 – 專門給 vncviewer 使用者所連接的埠 (port)
  2. 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

說明:

  1. VNC Viewer

    Port 5902 是給 VNC Viewer 使用.在 Linux 下可以直接使用

    [root@unsvr root]# vncviewer
    

    假設我的 VNC Server IP 為:192.8.1.115
    vnc4
    不過 Windows 預設並沒有安裝 vncviwer ,所以需要至 http://www.realvnc.com 下載. 

  2. Web based

    Port 5802 是給 Web Browser 使用. 不想下載一堆有的沒有的,可以考慮使用 web browser的方式來連結.不過前提是需要加裝 Java Runtime Environment (JRE) http://www.java.com 在 Windows 底下開 browser,輸入網址,再加上 port number : 5802 就可以透過 Web 方式連結.

    vnc1

     咦!!怎麼桌面和我們用的不同,原來系統預設使用最精簡的桌面程式 twm(Tab Window Manager),下面會介紹如何改成其他桌面程式(GNOME 或是 KDE).
    vnc2

    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 個網友的想法 “Linux – VNC(Virtual Network Computing)

  1. 自動參照通知: services | Benjr.tw

  2. 自動參照通知: Lniux – 遠端桌面 | Benjr.tw

  3. 自動參照通知: Installation via Serial Port Console | Benjr.tw

發表迴響