傳統FTP 在傳輸機制和實現原理上是沒有考慮安全機制的,因為它們在網絡上用明文傳送數據、用戶帳號和用戶口令,別有用心的人非常容易地就可以截獲這些數據、用戶帳 號和用戶口令。而且,這些網絡服務程序容易受到“中間人”(man-in-the-middle)這種攻擊方式的攻擊。所謂“中間人”的攻擊方式,就是" “中間人”冒充真正的服務器接收你的傳給服務器的數據,然后再冒充你把數據傳給真正的服務器。服務器和你之間的數據傳送被“中間人”做了手腳之后,就會出 現很嚴重的問題。
SSH是Secure Shell的縮寫。通過使用SSH,可以把所有傳輸的數據進行加密,而且能夠防止DNS欺騙和IP欺騙。使用SSH,還可以將傳輸的數據壓縮,所以可以加快傳輸的速度。SSH可以為FTP提供一個安全的“通道”。
SSH協議是建立在應用層和傳輸層基礎上的安全協議,它主要由以下三部分組成,共同實現SSH的安全保密機制。
l 傳輸層協議,它提供諸如認證、信任和完整性檢驗等安全措施,此外它還可以任意地提供數據壓縮功能。通常情況下,這些傳輸層協議都建立在面向連接的TCP數據流之上。
l 用戶認證協議層,用來實現服務器的跟客戶端用戶之間的身份認證,它運行在傳輸層協議之上。
l 連接協議層,分配多個加密通道至一些邏輯通道上,它運行在用戶認證層協議之上。
當安全的傳輸層連接建立之后,客戶端將發送一個服務請求。當用戶認證層連接建立之后將發送第二個服務請求。這就允許新定義的協議可以和以前的協議共存。連接協議提供可用作多種目的通道,為設置安全交互Shell會話和傳輸任意的TCP/IP端口和X11連接提供標准方法。
SSH提供兩種級別的安全驗證:SSH1和SSH2。
SSH1(基於口令的安全驗證),只要你知道自己的帳號和口令,就可以登錄到遠程主機,並且所有傳輸的數據都會被加密。但是,這種驗證方式不能保證你正在連接的服務器就是你想連接的服務器。可能會有別的服務器在冒充真正的服務器,也就是受到"中間人"這種攻擊方式的攻擊。
SSH2(基 於密匙的安全驗證),需要依靠密匙,也就是你必須為自己創建一對密匙,並把公有密匙放在需要訪問的服務器上。如果你要連接到SSH服務器上,客戶端軟件就 會向服務器發出請求,請求用你的密匙進行安全驗證。服務器收到請求之后,先在你在該服務器的用戶根目錄下尋找你的公有密匙,然后把它和你發送過來的公有密 匙進行比較。如果兩個密匙一致,服務器就用公有密匙加密"質詢"(challenge)並把它發送給客戶端軟件。客戶端軟件收到"質詢"之后就可以用你的 私人密匙解密再把它發送給服務器。
與SSH1相比,SSH2不需要在網絡上傳送用戶口令。另外,SSH2不僅加密所有傳送的數據,而"中間人"這種攻擊方式也是不可能的(因為他沒有你的私人密匙)。但是整個登錄的過程可能慢一些。
SSH最常見的應用就是,用它來取代傳統的Telnet、FTP等網絡應用程序,通過SSH登錄到遠方機器執行你想進行的工作與命令。在不安全的網路通訊環境中,它提供了很強的驗證(authentication)機制與非常安全的通訊環境。
使用SSH協議進行FTP傳輸的協議叫SFTP(安全文件傳輸)。
我們可以使用SFTP作為傳遞信息文件的協議。使用SFTP,需要使FTP服務器支持SFTP協議,並且在客戶端使用SFTP訪問服務器。
支持SSH的服務器端軟件
l VShell Server,Windows平台下的SSH服務器軟件
l Unix/Linux平台下的SSH服務器軟件非常多。
Windows平台下支持SSH的客戶端軟件
l Entunnel
l SecureCRT
l SecureFX
l F_SECRUE
SFTP開發
PUTTY是一個Windows平台下的SSH客戶端程序,支持SFTP。