VNC
簡介』
網絡遙控技術是指由一部計算機(主控端)去控制另一部計算機(被控端),而且當主控端在控制端時,就如同用戶親自坐在被控端前操作一樣,可以執行被控端的應用程序,及使用被控端的系統資源。
VNC
(
Virtual Network Computing
)是一套由
AT&T
實驗室所開發的可操控遠程的計算機的軟件,其采用了
GPL
授權條款,任何人都可免費取得該軟件。
VNC
軟件主要由兩個部分組成:
VNC server
及
VNC viewer
。用戶需先將
VNC server
安裝在被控端的計算機上后,才能在主控端執行
VNC viewer
控制被控端。
(在
windows
中也由一套著名的網絡遙控軟件
――Symantec
公司推出的
pcAnywhere
。
VNC server
與
VNC viewer
支持多種操作系統,如
Unix
系列(
Unix
,
Linux
,
Solaris
等),
windows
及
MacOS
,因此可將
VNC server
及
VNC viewer
分別安裝在不同的操作系統中進行控制。如果目前操作的主控端計算機沒有安裝
VNC viewer
,也可以通過一般的網頁瀏覽器來控制被控端。
整個
VNC
運行的工作流程如下:
(
1
)
VNC
客戶端通過瀏覽器或
VNC Viewer
連接至
VNC Server
。
(
2
)
VNC Server
傳送一對話窗口至客戶端,要求輸入連接密碼,以及存取的
VNC Server
顯示裝置。
(
3
)
在客戶端輸入聯機密碼后,
VNC Server
驗證客戶端是否具有存取權限。
(
4
)
若是客戶端通過
VNC Server
的驗證,客戶端即要求
VNC Server
顯示桌面環境。
(
5
)
VNC Server
通過
X Protocol
要求
X Server
將畫面顯示控制權交由
VNC Server
負責。
(
6
)
VNC Server
將來由
X Server
的桌面環境利用
VNC
通信協議送至客戶端,并且允許客戶端控制
VNC Server
的桌面環境及輸入裝置。
『
VNC
的安裝與使用』
本人的操作環境:被控端
Redhat9.0
,主控端
Windows XP
。
1
.
載
VNC Server
VNC Server
下載地址:
http://gwbn.onlinedown.net/soft/1271.htm
2
.安裝。
vnc-3.3.7-x86_linux.tar.gz (
如果是源代碼請看包里的說明
)
,
當下載了
VNC
的
Linux
版本后,可以解壓文件到一個文件夾中,例如
/home/vnc
,然后復制文件
vncserver
、
vncpasswd
和
Xvnc
到
/usr/bin
目錄中。假如想要能夠通過
VNC
服務器的整合
Java
界面遠程控制
Linux
電腦,也得需去建立一個子目錄
/usr/local/vnc/classes
。在建立此子目錄之后,復制
VNCJava.class
文件到此目錄中。(一般
redhat 9.0
自帶以上文件,所以直接用終端執行就可以)。
3.
在
Linux
上啟動
VNC Server
執行
vncserver
命令:
[root@linux root]# vncserver
You will require a password to access your desktops.
Password: ----
為了不想任何人都可以任意遙控此計算機。因此當第
Verify: ---1
次啟動
VNC server
時,會要求設置網絡遙控的密碼。
New ‘X’ desktop is linux:1 ----
一定要記住這一行稍后會用到。
Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/linux:1.log
(經上述步驟后,便已啟動了
VNC Server
。如果你想要更改
VNC Server
的密碼,只要執行
vncpasswd
命令即可。)
5.
從瀏覽器遠程遙控。
啟動
VNC Server
后直接打開瀏覽器,在地址欄中輸入被控端的網址或
IP
地址,并在網址后加上
“
:
5800
+顯示編號
”
的端口號即可操控該計算機。
例如:
http://192.168.01.:5801 (
如果顯示編號為
1
,一般第一次設置的顯示編號都是
1
,就用
5800
+
1
=
5801
。
)
如果看到窗口,就說明你成功,在密碼框輸入密碼,就能遠程控制了。
6
.
FAQ
A. 如何以圖形界面登錄被控端?
編輯~/.vnc/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" &
gnome-session &
startkde &
twm &
gnome-session是啟動Gnome圖形界面;startkde是啟動KDE圖形界面;twm是啟動文本界面。三者選其一。
A. 如何開機時自動啟動vnc服務
打開“系統設置”-->"服務器設置"-->"服務",勾選上vncserver,“保存”。
修改 /etc/sysconfig/vncservers
VNCSERVERS="1:root 2:phred 3:sysadmin" 1代表“桌面1”,root代表用戶名;可同時啟動多個用戶桌面
VNCSERVERARGS[1]="-geometry 800x600 -alwaysshared -depth 24"
-alwaysshared代表允許多用戶同時登錄 -depth代為色深,參數有8,16,24,32。
A
.為什么連接后,不能顯示桌面,而只有一個
Terminal
窗口?
試著修改
/root/.vnc/xstartup,
把最后一行
twm&
改成
gnome-session& or kde&(
據說
KDE
在目前的
VNC Viewer
上的表現不太穩定
)
B
.
為什么重新啟動
VNC Server
后,連接不上了?
因為重新啟動
VNC Server
時,系統會指定一個新的顯示編號,需使用此新的編號,否則就無法連接
查看vnc已啟用的桌面號及監聽進程
[root@linux /]# netstat -tlnp |grep vnc
vncserver 命令帶有一些很有用的參數,用vncserver --help 查看。
簡單解釋一下:
vncserver [:] [-name ] [-geometry x] [-depth ]
[-pixelformat format]
vncserver -kill :display
:
vnc服務的display號,可以自行指定,盡量不要使用系統默認的以保證安全,必須為非0的正整數
vncserver :99
使用時必須輸入正確的display號才能連接;用瀏覽器要在端口號加上display號,默認端口5800,遠程連接輸入 XXX.XXX.XXX.XXX:5899
-name 指定vncserver桌面名字
比如要讓名字顯示為 “紅帽”
vncserver -name 紅帽
-geometry x指定顯示桌面的分辨率,默認為1024x768
vncserver -geometry 800x600
這個命令實際中很有用,例如本地分辨率為1024x768 如果不設定遠程vnc服務分辨率就會造成桌面顯示不全的問題。
-depth 指定顯示顏色,設定范圍8~32
vncserver -depth 16
用16bits顏色顯示
-pixelformat 指定色素格式 與-depth大致相同,只是表示方法不一樣
vncserver -pixelformat RGB888
用24bits顏色顯示
vncserver -kill :display
結束vnc服務及遠程桌面
vncserver -kill :1
其它更詳細的使用請用man查看。
vnc內定的窗口管理器是twm與大家使用的可能不同,通過修改vnc的配置文件可以更換為自己喜歡的,方法如下:
修改用戶目錄下的 .vnc/xstartup 文件
#!/bin/sh
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &
將#!/bin/sh后面的內容全部注釋掉,改成
~/.Xclients
保存文件
現在可以測試修改是否成功,先kill vncserver服務
vncserver -kill :
或
pa aux|grep Xvnc
kill PID
重新啟動vncserver ,用vncviewer連接遠程桌面是不是已經變成自己喜歡的類型了。
在
前面有vnc server 設置的文章(http:
//bbs.chinaunix.net/forum/viewtopic.php?t=368552&highlight=yunqing)
里,
我們已經可以在一個linux的服務器上運行vncserver來進行遠程訪問了,但需要注意的是,如果直接使用vncviewer來進行訪問,有
兩點不利因素:
1. 口令傳輸是明文,很容易被偵聽到.
2. 防火墻需要打開59xx端口,這在通常的單位里是不可能的.
幸運的是,我們有ssh這個強大的工具,象X11 Forwarding(另文論述),我們可以使用ssh隧道來保護通訊過程,下面就進行簡單介紹.
假設vncserver運行在服務器 myserver (ip地址為:192.168.x.x)的屏幕1,也就是偵聽 192.168.x.x:5901, 用戶名為foo
情形一: vnc客戶端為linux
這種情形很簡單,一般的linux發行版本里面都默認安裝了ssh套件.
1. 用ssh登錄到服務器
ssh -L 5901:localhost:5901 -l foo myserver
或者直接用ip地址
ssh -L 5901:localhost:5901 -l foo 192.168.x.x
2. 在本機的另外開的終端上,運行vncviewer (或其它的類似工具)
vncviewer localhost:1
情形二: vnc客戶端為windows
1. 下載一個ssh客戶端,個人推薦putty,只有一個程序,不需要安裝,簡單而功能齊全. 到這里下載http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
下載putty.exe到桌面上直接運行即可。
2. 運行putty,輸入服務器的ip地址,輸入一個名字,這里myserver作為session的名字,按save保存。見附圖一
3. 單擊對話框左邊的tunnels來選擇相關設置,在source port里輸入5901,在Destination里輸入localhost:5901,按Add添加,如附圖二
4. 單擊左邊session,回到session設置,按save重新保存。按open即可登錄到服務器。
5. 運行vnc-viewer (如果沒有,到這里下載http://www.realvnc.com/download.html,只要一個
exe的文件就行),在Server里輸入localhost:1,見附圖三,
輸入口令后一個linux的桌面就會出現在windows里,并且是非常 安全的,Cool?