VNC是一款基于 UNIX 和Linux 操作系統(tǒng)的免費(fèi)開源軟件,是基于RFB協(xié)議進(jìn)行通信的。RFB是一個(gè)基于TCP的應(yīng)用層協(xié)議,是一個(gè)遠(yuǎn)程圖形用戶的、與平臺(tái)無關(guān)的、簡(jiǎn)單顯示協(xié)議的超級(jí)瘦客戶系統(tǒng),遵守RFB協(xié)議的RFB客戶端是一個(gè)無狀態(tài)的客戶端。是服務(wù)器虛擬化產(chǎn)品VMware vSphere,都可以通過VNC客戶端對(duì)虛擬機(jī)遠(yuǎn)程管理和維護(hù)。
在VMware官方網(wǎng)站提供的手冊(cè)里面,很少提及VNC,但在官方網(wǎng)站提供的“VMware Knowledge Base”(VMware知識(shí)庫)中,有不少關(guān)于VNC的內(nèi)容。例如,在“訪問VMware vCenter Server、VMware ESXi和ESX主機(jī)以及其他網(wǎng)絡(luò)組件所需的TCP和 UDP端口(2081930)”頁面中,列出了VMware所需要的各類端口,其中就包含“5900到5964”端口,將其用途標(biāo)識(shí)為“管理工具使用的RFB協(xié)議,如 VNC”。
在使用vSphere Web Client等工具連接vCenter或ESXi主機(jī)后,有時(shí)會(huì)出現(xiàn)“無法打開MKS:內(nèi)部錯(cuò)誤(Unable to open MKS:Internal Error)”“無法連接到MKS(Unable to connect to MKS)”“解析服務(wù)器VNC數(shù)據(jù)流時(shí),客戶端出錯(cuò)”等錯(cuò)誤消息。
如果打開虛擬機(jī)目錄中的“/vmfs/volumes/datastore/virutal_machine/vmware.log”文件,可以看到文件內(nèi)容里面有類似“
由此可見,VMware早已把VNC集成到了自己的產(chǎn)品中,無論是桌面虛擬化產(chǎn)品 VMware Workstation,還
用VMware Workstation打開虛擬機(jī),單擊“虛擬機(jī)→設(shè)置”。
出現(xiàn)“虛擬機(jī)設(shè)置”對(duì)話框后,單擊“選項(xiàng)”,在左側(cè)設(shè)置選項(xiàng)清單中,選擇“VNC連接”,在右側(cè)勾選“啟用VNC連接”,指定訪問虛擬機(jī)的遠(yuǎn)程端口號(hào),本例輸入的是“5901”。在“密碼”和“確認(rèn)”文本框中指定遠(yuǎn)程訪問的密碼。
說 明:VMware在 編 碼為“2081930”、標(biāo)題為“訪問VMware vCenter Server、VMware ESXi和ESX主機(jī)以及其他網(wǎng)絡(luò)組件所需的TCP和UDP端口”的知識(shí)頁面中,已經(jīng)指出VNC的端口范圍“5900-5964”,因此,此處輸入的端口號(hào)必須在此范圍內(nèi)。
開啟VNC連接后,運(yùn)行VNC客戶端程序,筆者用的是TightVNC。
打開TightVNC窗口后,在“Remote Host”(遠(yuǎn)程主機(jī))文本框中輸入VNC服務(wù)器的IP地址及端口號(hào),單擊“Connect”(連接)按鈕。
注意:此處輸入的遠(yuǎn)程主機(jī)地址不是虛擬機(jī)的IP地址,而是主機(jī)的IP地址,端口號(hào)是在開啟虛擬機(jī)VNC連接功能時(shí)設(shè)置的端口號(hào)。
出現(xiàn)“Vnc Authentication”(VNC 認(rèn)證)對(duì)話框后,輸入開啟虛擬機(jī)VNC連接時(shí)設(shè)置的密碼。
使用VNC客戶端遠(yuǎn)程連接到虛擬機(jī)后的效果如圖1所示,此時(shí)可以像遠(yuǎn)程桌面連接那樣遠(yuǎn)程超控虛擬機(jī)。
VMware提供的VNC連接允許多個(gè)終端同時(shí)連接到同一臺(tái)VNC服務(wù)器(VMware虛擬機(jī)),而且這些終端可以是PC機(jī),也可以是手機(jī)這樣的移動(dòng)終端。VNC客戶端程序也可以不同。下面用Android(安卓)系統(tǒng)的手機(jī),嘗試在手機(jī)上用VNC客戶端遠(yuǎn)程連接到VMware虛擬機(jī)。
(1)通過應(yīng)用商店下載并安裝一個(gè)VNC客戶端,筆者安裝的VNC客戶端是“VNC Viewer”。
(2)打開 VNC Viewer,此時(shí)“Address Book”(地址簿)是空的,點(diǎn)擊右下角的“+”按鈕,增加一個(gè)VNC連接地址。
(3)出現(xiàn)“New connection”(新連接)對(duì)話框,輸入VNC服務(wù)器的地址及端口。此處的地址仍是主機(jī)地址,不是虛擬機(jī)地址,端口號(hào)是為虛擬機(jī)開啟VNC連接時(shí)設(shè)置的端口號(hào)。然后給這個(gè)新連接取一個(gè)名字。
(4)回到剛創(chuàng)建的連接后,點(diǎn)擊屏幕下方的“Continue”。
(5)彈出“Unencrypted connect”(未加密的連接)對(duì)話框后,詢問是否繼續(xù)連接,單擊“OK”按鈕繼續(xù)連接。
圖1 使用VNC客戶端遠(yuǎn)程連接到虛擬機(jī)效果
圖2 在手機(jī)上遠(yuǎn)程控制虛擬機(jī)的效果
說明:VMware提供的VNC連接功能是非加密連接,此處的非加密連接,是指通過VNC連接發(fā)送的數(shù)據(jù)未加密,而不是認(rèn)證是需要輸入密碼就是加密連接了,也就是說,登錄VNC的安全認(rèn)證和VNC連接加密是兩回事。
(6)出現(xiàn)“Authentiction”(認(rèn) 證)對(duì)話框,輸入密碼后,點(diǎn)擊“Continue”繼續(xù)。
VNC連接認(rèn)證成功后,就可以連接到VNC服務(wù)器了,在手機(jī)上遠(yuǎn)程控制虛擬機(jī)的效果如圖2所示。
VMware不僅提供為虛擬機(jī)提供了基于VNC的遠(yuǎn)程連接功能,還提供了VNC連接查看工具。參照開啟虛擬機(jī)VNC連接功能的操作步驟,進(jìn)入VNC連接設(shè)置頁面,單擊“查看VNC連接”按鈕,可了解有哪些終端在遠(yuǎn)程控制這臺(tái)虛擬機(jī)。
打開“VNC連接”對(duì)話框后,可以通過連接列表中了解哪些終端設(shè)備遠(yuǎn)程連接到了這臺(tái)虛擬機(jī)。具體信息包括終端設(shè)備(主機(jī))的名稱、IP地址、已連接時(shí)間和空閑時(shí)間。
VMware vSphere并不像VMware Workstation那 樣,在虛擬機(jī)設(shè)置里面有“啟用VNC連接”的選項(xiàng),要啟用虛擬機(jī)的VNC連接功能,需手動(dòng)配置虛擬機(jī)參數(shù)。同時(shí),還要修改ESXi主機(jī)的防火墻規(guī)則,讓ESXi主機(jī)的防火墻允許其他終端設(shè)備通過VNC協(xié)議連接到虛擬機(jī)。因此,開啟VMware vSphere虛擬機(jī)VNC遠(yuǎn)程連接功能的過程,比開啟VMware vSphere虛擬機(jī)VNC遠(yuǎn)程連接功能要復(fù)雜一些。
SSH是安全外殼協(xié)議(Secure Shell)縮寫,是一種專為遠(yuǎn)程登錄會(huì)話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議,利用SSH可以有效防止遠(yuǎn)程管理過程中的信息泄露問題。在本案例中,需要啟用ESXi主機(jī)的SSH,通過SSH修改ESXi主機(jī)的防火墻規(guī)則。
可以在配置ESXi主機(jī)的時(shí)候開啟SSH,也可以使用vSphere Web Client、vSphere Client等工具,連接到ESXi主機(jī)后,再通過配置ESXi主機(jī)來開啟SSH。
(1)直接在ESXi主機(jī)上開啟SSH
(在ESXi主機(jī)上操作)進(jìn)入ESXi主機(jī)系統(tǒng)配置頁面,在系統(tǒng)配置選項(xiàng)中選擇“Troubleshooting Options(故障排除選項(xiàng))”。
進(jìn) 入“Troubleshooting Mode Options”(故 障 排除模式設(shè)置)頁面后,選中“Enable SSH”并回車,即可開啟ESXi主機(jī)的SSH。
(2)使 用 vSphere Client開啟ESXi主機(jī)的SSH
用vSphere Client打開ESXi主機(jī),單擊“配置”選項(xiàng)卡,在窗口左下側(cè)“軟件”欄目下找到并選擇“安全配置文件”選項(xiàng),此時(shí)窗口右側(cè)會(huì)出現(xiàn)安全配置文件的一些參數(shù),主要是服務(wù)和防火墻兩大類參數(shù)。SSH屬于服務(wù)類,此時(shí)單擊“服務(wù)”右側(cè)的“屬性”按鈕。
出現(xiàn)“SSH(TSM-SSH)選項(xiàng)”對(duì)話框后,勾選“與主機(jī)一起啟動(dòng)和停止”,單擊“啟動(dòng)”按鈕即可開啟ESXi主機(jī)的SSH。
開啟ESXi主機(jī)后,就可以使用SecureCRT之類的終端仿真程序登錄ESXi主機(jī)。
(1)運(yùn)行 SecureCRT,首次運(yùn)行SecureCRT,會(huì)彈出“快速連接”對(duì)話框,此時(shí)在“主機(jī)名”文本框中輸入ESXi主機(jī)的IP地址,在“用戶名”文本框中輸入登錄ESXi主機(jī)的用戶名,其他參數(shù)取默認(rèn)值即可。
(2)出現(xiàn)“新建主機(jī)密鑰”對(duì)話框后,單擊“接受并保存按鈕”。
(3)出現(xiàn)“Keyboard Interactive Authentication”(鍵 盤 交互認(rèn)證)對(duì)話框后,輸入登錄ESXi主機(jī)的密碼。
(4)用SecureCRT登錄到ESXi主機(jī)后,就可以根據(jù)需求,遠(yuǎn)程配置ESXi主機(jī)和ESXi主機(jī)交換文件了。在本例中,用SecureCRT登錄ESXi主機(jī)的主要目的是配置防火墻規(guī)則,讓VNC終端能夠遠(yuǎn)程訪問控制ESXi主機(jī)下的虛擬機(jī)。為了便于創(chuàng)建防火墻規(guī)則,可以提前用記事本或Adobe Dreamweaver創(chuàng)建防火墻規(guī)則文件。在本例中,創(chuàng)建的防火墻規(guī)則文件的文件名是“VNC.XML”,內(nèi)容如下:
簡(jiǎn)單說明一下上述防火墻規(guī)則:“”是規(guī)則 名“VNC”;“”是入站規(guī)則,規(guī)則協(xié)議是TCP,入站端口范圍是“5900-5964”?!啊笔浅稣疽?guī)則。
(5)回到SecureCRT窗口后,單擊SecureFX圖標(biāo)按鈕,打開 SecureFX。SecureFX是一款支持普通FTP標(biāo)準(zhǔn)和安全數(shù)據(jù)傳輸標(biāo)準(zhǔn)(SFTP或者在SSH2上的FTP)的FTP客戶端軟件,在本例中,需要用它將防火墻規(guī)則文件上傳到ESXi主機(jī)“/etc/vmware/firewall”文件夾下。
(6)盡 管是 通 過SecureCRT調(diào)用的SecureFX,但是用SecureFX登錄ESXi主機(jī)仍需登錄驗(yàn)證,此時(shí)會(huì)彈出驗(yàn)證對(duì)話框。SecureFX會(huì)沿用SecureCRT登錄的主機(jī)地址和用戶名,此時(shí)只輸入密碼即可。
(7)SecureFX的 界 面和資源管理器有些類似,用SecureFX登錄到ESXi主機(jī)后,用拖拽的方法,將創(chuàng)建好的防火墻規(guī)則文件“VNC.XML”上傳到ESXi主機(jī)“/etc/vmware/firewall”文件夾中。
(8)將防火墻規(guī)則文件上 傳 到ESXi主 機(jī)“/etc/vmware/firewall”文 件 夾后,回到SecureCRT窗口,輸入命令“esxcli network firewall refresh”,更新防火墻規(guī)則。再用命令“esxcli network firewall ruleset list | grep VNC”檢測(cè)所創(chuàng)建的防火墻規(guī)則是否有效。
如果檢查結(jié)果列表有“VNC true”,說明防火墻規(guī)則配置成功,否則需要仔細(xì)檢查規(guī)則,找出并修正其中的錯(cuò)誤,再上傳更新。
(1)用vSphere Client(用 vSphere Web Client或VMware Workstation Pro也可)連接到ESXi主機(jī),關(guān)閉需要開啟VNC連接功能的虛擬機(jī),編輯虛擬機(jī),單擊“選項(xiàng)”選項(xiàng)卡,在設(shè)置列表中找到并選擇“常規(guī)”,在右側(cè)“配置參數(shù)”欄單擊“配置參數(shù)按鈕”。
(2)出現(xiàn)“配 置 參數(shù)”對(duì)話框后,先看看參數(shù)列表中是否有“RemoteDisplay.vnc.enabled”、“RemoteDisplay.vnc.password”、“RemoteDisplay.vnc.port”三項(xiàng)參數(shù),如果沒有,可單擊“添加行”按鈕添加這三個(gè)參數(shù)。配置參數(shù)時(shí),請(qǐng)按以下參數(shù)值配置參數(shù)。
RemoteDisplay.vnc.enabled= true
RemoteDisplay.vnc.password=
RemoteDisplay.vnc.port=
圖3 用TightVNC Viewer連接到VMware vSphere虛擬機(jī)的效果
注意:VMware所提供的配置參數(shù)功能只能修改或添加參數(shù),不能刪除參數(shù),因此,在配置參數(shù)前,一定要檢查現(xiàn)有的參數(shù),查看參數(shù)列表里面是否有需要配置的參數(shù),如果沒有才添加。
開啟虛擬機(jī)VNC連接后,就可以用VNC客戶端連接到此虛擬機(jī)了。具體連接方法可以參考前面“VMware workstation桌面虛擬機(jī)VNC遠(yuǎn)程控制實(shí)戰(zhàn)”的內(nèi)容。在本例中,用TightVNC Viewer連接到VMware vSphere虛擬機(jī)的效果如圖3所示。
VMware已經(jīng)提供了vSphere Web Client、vSphere Client、VMware Workstation等功能強(qiáng)大的虛擬機(jī)遠(yuǎn)程管理運(yùn)維工具,也提供了在移動(dòng)終端上使用的虛擬機(jī)遠(yuǎn)程運(yùn)維管理工具VMware View Client,為 什么還要用VNC遠(yuǎn)程連接到虛擬機(jī)呢?
其實(shí),VMware提供的這些工具應(yīng)用范圍還是有限的,以Android移動(dòng)終端為例,有的終端無法安裝View Client,還有的終端設(shè)備用View Client遠(yuǎn)程連接不到虛擬機(jī)。對(duì)使用桌面系統(tǒng)的用戶來講,VNC客戶端所占資源比vSphere Client小很多,用VNC客戶端遠(yuǎn)程連接虛擬機(jī)可能比vSphere Client便捷得多。在非正式場(chǎng)合,用VNC遠(yuǎn)程連接到虛擬機(jī),也是一種補(bǔ)充辦法。
基于VNC技術(shù)遠(yuǎn)程管理運(yùn)維虛擬機(jī)有其他遠(yuǎn)程控制方式不可比擬的優(yōu)勢(shì),例如,用它可以遠(yuǎn)程修改CMOS設(shè)置,可以安裝操作系統(tǒng),可以遠(yuǎn)程調(diào)試啟動(dòng)過程……,只要虛擬機(jī)電源處于開機(jī)狀態(tài),就可以用VNC客戶端遠(yuǎn)程連接到虛擬機(jī),而不用擔(dān)心VNC服務(wù)器是否在運(yùn)行。