SSH和SFTP簡介
傳統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的伺服器端軟體
lVShell Server,Windows平臺下的SSH伺服器軟體
lUnix/Linux平臺下的SSH伺服器軟體非常多。
Windows平臺下支援SSH的客戶端軟體
lEntunnel
lSecureCRT
lSecureFX
lF_SECRUE
SFTP開發
PUTTY是一個Windows平臺下的SSH客戶端程式,支援SFTP。關於PUTTY的更多資訊可以參考: