[Linux]-CentOS 安裝 VNC

摘要:[Linux]-CentOS 安裝 VNC

前言

VNC (Virtual Network Computing)簡單說就是遠端連線了,因為有時會需要用到 X-Win (ex. 查看 UPS 設定) 又不想到主機前去使用因此就裝 VNC Server 來方便我連到 CentOS 去,開始玩吧。

實作環境

  • CentOS 5.1 (Linux 2.6.18-53.el5)
  • vnc-server-4.1.2-9.el5

安裝及設定

步驟1.修改 vncserver 設定檔

在修改前我們先確定系統是否有安裝 VNC Server 套件。

 #rpm -q vnc vnc-server
 vnc-server-4.1.2-9.el5

修改 vnc server 設定檔,只加入如下一行即可而 100 的意思為屆時連接 VNC Service 時的 Port (5900 + 100),所以設定 100 到時連接 VNC Server 就使用 :6000

 #vi /etc/sysconfig/vncservers
 #VNCSERVERS="2:myusername"                                               //預設值
 #VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -nohttpd -localhost"
 VNCSERVERS="100:weithenn"                                                //新增此行
 VNCSERVERARGS[100]="-geometry 1024x768"                                  //指定屆時連接到 Xwindows 的解析度

步驟2.啟動 VNC Service

再啟動 VNC Service 以前我們先設定屆時連接 VNC Server 的 Password,記得密碼必須超過 6 個字元否則會出現 Password must be at least 6 characters - try again 訊息請您加強密碼強度,當 VNC Password 設定後會自動建立密碼檔我的例子就會建在 /home/user/weithenn/.vnc/passwd。

 #vncpasswd
 Password:                      //輸入 VNC 密碼
 Verify:                        //再輸入一次 VNC 密碼以確認

設定完密碼後啟動 VNC Service 吧。

 #/etc/rc.d/init.d/vncserver start
 Starting VNC server: 100:weithenn xauth:  creating new authority file /home/user/weithenn/.Xauthority
 New 'centos-jiakai.weithenn.idv.tw:100 (weithenn)' desktop is centos-jiakai.weithenn.idv.tw:100
 Creating default startup script /home/user/weithenn/.vnc/xstartup
 Starting applications specified in /home/user/weithenn/.vnc/xstartup
 Log file is /home/user/weithenn/.vnc/centos-jiakai.weithenn.idv.tw:100.log
                                                                [  OK  ]

Windows 當 VNC Client 的話就下載[RealVNC] 吧,安裝完畢後輸入要連接的 VNC Server 及剛才設定的 Port :6000,若正確的話就會跳出密碼認證視窗。

VNC Client

但此時應該是看到如下畫面醜醜的畫面 (twm window manager)

twm window manager

所以我們透過修改 ~/.vnc/xstartup 來讓連接時變成你所安裝的 X-Win (Gnome or KDE)

 #vi ~/.vnc/xstartup
 # Uncomment the following two lines for normal desktop:
 unset SESSION_MANAGER                          //將此行 mark 拿掉
 exec /etc/X11/xinit/xinitrc                    //將此行 mark 拿掉

修改後記得重新啟動 VNC Service 才會載入新的設定

 #/etc/rc.d/init.d/vncserver restart
 Shutting down VNC server: 100:weithenn                     [  OK  ]
 Starting VNC server: 100:weithenn
 New 'centos-jiakai.weithenn.idv.tw:100 (weithenn)' desktop is centos-jiakai.weithenn.idv.tw:100
 Starting applications specified in /home/user/weithenn/.vnc/xstartup
 Log file is /home/user/weithenn/.vnc/centos-jiakai.weithenn.idv.tw:100.log
                                                           [  OK  ]

檢查相關 Listen Port 是否正確執行

 #netstat -tnl
 Active Internet connections (only servers)
 Proto Recv-Q Send-Q Local Address               Foreign Address             State
 tcp        0      0 0.0.0.0:6000                0.0.0.0:*                   LISTEN

檢查相關 Process 是否正確執行

 #ps ax |grep Xvnc
 20116 ?        S      0:00 Xvnc :100 -desktop centos-test.weithenn.idv.tw:100 (weithenn) -httpd /usr/share/vnc/classes -auth /home/user/weithenn/.Xauthority -geometry 1024x768 -depth 16 -rfbwait 30000 -rfbauth /home/user/weithenn/.vnc/passwd -rfbport 6000 -pn

此時我們在連到 VNC Server 應該會看到你所安裝的 X-Win {Gnome (左下圖) or KDE (右下圖)}

Gnome Desktop KDE Desktop

步驟3.設定開機自動啟動 vncserver 服務

使用 chkconfig 指令來查看 vncserver 在各 runlevel 下狀態

 #chkconfig --list |grep vncserver
 vncserver        0:off   1:off   2:off   3:off   4:off   5:off   6:off

設定 lighttpd 在 runlevel 為 2、3、5 時會啟動服務

 #chkconfig --levels 235 vncserver on     

檢查剛才的設定是否生效

 #chkconfig --list |grep vncserver
 vncserver        0:off   1:off   2:on    3:on    4:off   5:on    6:off

補充:IPTable 設定

若照上述設定都完成了但就是連不上 VNC Server?有可能是您忘了開啟 IPTable Port (或是忘了關掉 IPTable Service),若有開啟 IPTable 的話就加入您所要開啟的 VNC Port,然後重新啟動 iptable service。

 #vi /etc/sysconfig/iptables
 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6000 -j ACCEPT  //加入此行

將 VNC Service Port 加入 iptable 允許規則後我們重新啟動 iptable service,之後再試試應該就可順利連結 VNC Server 了。

 #/etc/rc.d/init.d/iptables restart
 Flushing firewall rules:                                   [  OK  ]
 Setting chains to policy ACCEPT: filter                    [  OK  ]
 Unloading iptables modules:                                [  OK  ]
 Applying iptables firewall rules:                          [  OK  ]
 Loading additional iptables modules: ip_conntrack_netbios_n[  OK  ]

參考