使用SSH+VNC實(shí)現(xiàn)安全的Linux遠(yuǎn)程桌面管理
VNC可以對(duì)數(shù)據(jù)進(jìn)行壓縮,使得傳輸?shù)臄?shù)據(jù)量比直接用SSH加密的小,但是缺點(diǎn)有一到兩次機(jī)會(huì)讓同一網(wǎng)段的計(jì)算機(jī)用sniffer竊聽到用戶名和密碼。認(rèn)證之后的數(shù)據(jù)可以進(jìn)行加密傳輸,所以使用過(guò)程中如果經(jīng)過(guò)配置,則是安全的,否則傳輸內(nèi)容不能保證完全保密。必要時(shí)可以通過(guò)SSH進(jìn)行加密端口映射來(lái)保證傳輸用戶名和密碼的時(shí)候也是加密的,這一操作占用的額外帶寬是極少的。
至于SSH保護(hù)VNC的安全,需要使用SSH的端口轉(zhuǎn)發(fā)功能。一般在客戶端使用的是Linux的時(shí)候,可以先用SSH建立鏈接,語(yǔ)法上應(yīng)當(dāng)添加“-L 本地端口:本地地址:遠(yuǎn)程端口 遠(yuǎn)程地址”這一附加參數(shù),比如說(shuō)本地是X.Y.Z.W,服務(wù)器是A.B.C.D,要轉(zhuǎn)發(fā)的端口本地的是5901,遠(yuǎn)程的也是5901,那么命令應(yīng)當(dāng)是:ssh -L 5901:X.Y.Z.W:5901 A.B.C.D
其他的參數(shù)多數(shù)可以同時(shí)使用。執(zhí)行完畢后就已經(jīng)創(chuàng)建了服務(wù)器5901端口和本地5901端口的加密隧道。假設(shè)要鏈接的服務(wù)器上運(yùn)行的VNC桌面號(hào)是2,則繼續(xù)執(zhí)行如下命令:vncviewer A.B.C.D:2
這樣打開的VNC窗口所有數(shù)據(jù)都經(jīng)過(guò)了SSH的加密。
由于一般管理情況下多采用SSH的Windows客戶端,也就是SSH Secure Shell,所以下面介紹如何配置Windows下的SSH Secure Shell來(lái)配合VNC實(shí)現(xiàn)安全的Linux遠(yuǎn)程桌面管理。
首先,在SSH Secure Shell的主界面上選擇Settings下的Tunneling,如圖所示。
然后,選擇添加一個(gè)配置,如圖所示,其中Listen是本機(jī)端口,Destination是遠(yuǎn)程地址和端口,Display可以設(shè)定自己的描述。
為SSH Secure Shell設(shè)定Tunneling
Tunneling設(shè)定的具體選項(xiàng)
最后,再運(yùn)行vncviewer來(lái)鏈接即可。特別值得注意的是:此處Server的地址不是需要連接的VNC Server的地址,而是前面設(shè)定的本機(jī)的SSH偵聽端口的地址,因?yàn)樗型ㄍ鵙NC Server的流量都需要先經(jīng)過(guò)本機(jī)的SSH進(jìn)行轉(zhuǎn)發(fā),如圖所示,一般設(shè)定為localhost加端口即可,該端口就是在圖中設(shè)定的SSH的偵聽端口。
使用Windows中的VNC Viewer連接Linux端的VNC Server
下圖清晰地給出了使用Wireshark對(duì)上述通信的流量進(jìn)行抓包的結(jié)果,可以看到,從客戶端去往服務(wù)器端的VNC流量,均采用SSH協(xié)議進(jìn)行了加密傳輸,因此針對(duì)傳統(tǒng)的未經(jīng)過(guò)SSH加密處理的VNC通信來(lái)說(shuō)要安全很多,能夠有效地避免竊聽和中間人攻擊:
針對(duì)上述通信流程的抓包結(jié)果顯示