SSH與OpenSSH
傳統(tǒng)的網(wǎng)絡(luò)服務(wù)程序,如:ftp、pop和telnet在本質(zhì)上都是不安全的,因?yàn)樗鼈冊(cè)诰W(wǎng)絡(luò)上用明文傳送口令和數(shù)據(jù),別有用心的人非常容易就可以截獲這些口令和數(shù)據(jù)。而且,這些服務(wù)程序的安全驗(yàn)證方式也是有其弱點(diǎn)的,就是很容易受到“中間人”(man-in-the-middle)這種方式的攻擊。所謂“中間人”的攻擊方式,就是“中間人”冒充真正的服務(wù)器接收你的傳給服務(wù)器的數(shù)據(jù),然后再冒充你把數(shù)據(jù)傳給真正的服務(wù)器。服務(wù)器和你之間的數(shù)據(jù)傳送被“中間人”一轉(zhuǎn)手做了手腳之后,就會(huì)出現(xiàn)很嚴(yán)重的問(wèn)題。
SSH的英文全稱是Secure SHell。通過(guò)使用SSH,你可以把所有傳輸?shù)臄?shù)據(jù)進(jìn)行加密,這樣“中間人”這種攻擊方式就不可能實(shí)現(xiàn)了,而且也能夠防止DNS和IP欺騙。還有一個(gè)額外的好處就是傳輸?shù)臄?shù)據(jù)是經(jīng)過(guò)壓縮的,所以可以加快傳輸?shù)乃俣取SH有很多功能,它既可以代替telnet,又可以為ftp、pop、甚至ppp提供一個(gè)安全的“通道”。
最初SSH是由芬蘭的一家公司開(kāi)發(fā)的。但是因?yàn)槭馨鏅?quán)和加密算法的限制,現(xiàn)在很多人都轉(zhuǎn)而使用OpenSSH。OpenSSH是SSH的替代軟件,而且是免費(fèi)的,可以預(yù)計(jì)將來(lái)會(huì)有越來(lái)越多的人使用它而不是SSH。
SSH是由客戶端和服務(wù)端的軟件組成的,有兩個(gè)不兼容的版本分別是:1.x和2.x。用SSH 2.x的客戶程序是不能連接到SSH 1.x的服務(wù)程序上去的。OpenSSH 2.x同時(shí)支持SSH 1.x和2.x。
SSH的安全驗(yàn)證是如何工作的
從客戶端來(lái)看,SSH提供兩種級(jí)別的安全驗(yàn)證。
第一種級(jí)別(基于口令的安全驗(yàn)證)只要你知道自己帳號(hào)和口令,就可以登錄到遠(yuǎn)程主機(jī)。所有傳輸?shù)臄?shù)據(jù)都會(huì)被加密,但是不能保證你正在連接的服務(wù)器就是你想連接的服務(wù)器。可能會(huì)有別的服務(wù)器在冒充真正的服務(wù)器,也就是受到“中間人”這種方式的攻擊。
第二種級(jí)別(基于密匙的安全驗(yàn)證)需要依靠密匙,也就是你必須為自己創(chuàng)建一對(duì)密匙,并把公用密匙放在需要訪問(wèn)的服務(wù)器上。如果你要連接到SSH服務(wù)器上,客戶端軟件就會(huì)向服務(wù)器發(fā)出請(qǐng)求,請(qǐng)求用你的密匙進(jìn)行安全驗(yàn)證。服務(wù)器收到請(qǐng)求之后,先在你在該服務(wù)器的家目錄下尋找你的公用密匙,然后把它和你發(fā)送過(guò)來(lái)的公用密匙進(jìn)行比較。如果兩個(gè)密匙一致,服務(wù)器就用公用密匙加密“質(zhì)詢”(challenge)并把它發(fā)送給客戶端軟件。客戶端軟件收到“質(zhì)詢”之后就可以用你的私人密匙解密再把它發(fā)送給服務(wù)器。
用這種方式,你必須知道自己密匙的口令。但是,與第一種級(jí)別相比,第二種級(jí)別不需要在網(wǎng)絡(luò)上傳送口令。
第二種級(jí)別不僅加密所有傳送的數(shù)據(jù),而且“中間人”這種攻擊方式也是不可能的(因?yàn)樗麤](méi)有你的私人密匙)。但是整個(gè)登錄的過(guò)程可能需要10秒。
Windows下的OpenSSH解決方案
可以看到,SSH具備很多優(yōu)勢(shì),因此很多現(xiàn)代Linux服務(wù)器基于安全考慮已經(jīng)不再開(kāi)放傳統(tǒng)的telnet和ftp服務(wù),而是采用更安全SSH和sftp。隨Linux越來(lái)越多的進(jìn)入服務(wù)器領(lǐng)域,這種情況也越來(lái)越常見(jiàn)。從安全角度上來(lái)看這當(dāng)然是個(gè)進(jìn)步,不過(guò)也帶來(lái)了新的問(wèn)題。因?yàn)槟壳坝脕?lái)提供SSH相關(guān)服務(wù)的OpenSSH主要在Linux環(huán)境開(kāi)發(fā)的,為了讓采用windows平臺(tái)的客戶機(jī)與Linux服務(wù)器上的OpenSSH服務(wù)器通信,我們有必要尋找一個(gè)OpenSSH的windows解決方案。當(dāng)然,基于SSH的眾多安全特性,讓windows服務(wù)器可以運(yùn)行SSH相關(guān)服務(wù)也是個(gè)誘人的想法。為此,尋找windows平臺(tái)下的SSH解決方案成為很多網(wǎng)管的目標(biāo)。
這里,首先納入考慮的還是OpenSSH的for windows版本。畢竟,OpenSSH幾乎是現(xiàn)在SSH實(shí)現(xiàn)的代名詞,與現(xiàn)有各種SSH服務(wù)器和客戶端的兼容性非常良好。我曾經(jīng)遇到過(guò)其它一些支持SSH的客戶端工具生成的密匙無(wú)法被SSH服務(wù)器識(shí)別的情況,在我更換了OpenSSH的密匙生成工具重新生成密匙后解決了問(wèn)題。在本文中,我們將主要介紹windows平臺(tái)的OpenSSH工具的使用。OpenSSH for windows實(shí)際上是Cygwin系列安裝包中的OpenSSH安裝包,它在無(wú)需安裝整個(gè)Cygwin安裝包的情況下安裝OpenSSH所需的最小工具集。
小知識(shí):什么是Cygwin
Cygwin是Windows下的一個(gè)Linux仿真環(huán)境,它包括兩部分,一是cygwin1.dll文件,它作為一個(gè)Linux API仿真器層為各Linux應(yīng)用程序提供各種Linux下的系統(tǒng)調(diào)用。另一部分包括一系列Linux下的常用工具包,這些工具包是用l這些工具的源碼針對(duì)Cygwin環(huán)境重慶編譯而成,本文介紹的OpenSSH for windows就是這些工具包中的一個(gè)。需要注意的是Cygwin并不能讓原生Linux程序在windows下直接運(yùn)行,如果你想讓一個(gè)Linux應(yīng)用程序在windows下運(yùn)行,你將不行不將應(yīng)用程序從源代碼重新編譯。
不過(guò)OpenSSH for windows是一個(gè)命令行的工具,而且目前與windows 2003的兼容性還不是很好。其它還有一些windows平臺(tái)的OpenSSH替代品,下面我主要介紹幾種免費(fèi)的產(chǎn)品。
PuTTY是這些產(chǎn)品中最有名的一種,它實(shí)際包含了多個(gè)工具分別用來(lái)完成SSH的各個(gè)功能,包括了SSH1和SSH2的客戶端和服務(wù)器端實(shí)現(xiàn)。它采用類似類似BSD的MIT軟件許可證。它也主要是一個(gè)基于命令行的工具。
WinSCP是一個(gè)Windows環(huán)境下使用SSH的開(kāi)源圖形化SFTP客戶端。同時(shí)支持SCP協(xié)議。它的主要功能就是在本地與遠(yuǎn)程計(jì)算機(jī)間安全的復(fù)制文件。它的最大特點(diǎn)是界面非常友好,使用時(shí)可以選擇windows資源管理器界面或者“Norton Commander”界面,而且已經(jīng)有中文版本。可惜,在我的windows XP機(jī)器上,安裝始終報(bào)錯(cuò)。
Secure iXplorer GPL是PuTTY'工具包中pscp.exe(用于安全復(fù)制文件)的一個(gè)圖形化前端。
FileZilla是一款windows平臺(tái)下的功能強(qiáng)大的FTP客戶端軟件,它有豐富的功能特性,并支持SFTP。


