SSH和SSL都可用于保護Internet上的通信。本本試圖以容易理解的術語解釋兩者之間的差異。
SSL旨在保護網絡會話;它可以做得更多,但這就是它本來的意圖。
SSH旨在替代telnet和FTP;它可以做得更多,但這就是它本來的意圖。
SSL是具有多種用途的插件。它的前端HTTP為你提供HTTPS。它還可以為POP3、SMTP、IMAP以及任何其他良好的TCP應用程序執行此操作。對于從頭開始創建網絡應用程序的大多數程序員,只需抓取SSL實現并將其與其應用程序捆綁在一起,即可在通過TCP進行網絡通信時提供加密,這是非常簡單的。
SSH相當于瑞士軍刀,旨在做許多不同的事情,其中大部分都圍繞在主機之間建立安全通道。SSH的一些實現依賴于SSL庫——這是因為SSH和SSL使用許多相同的加密算法(如TripleDES)。
對比于HTTPS基于SSL,SSH不是基于SSL的。SSH不僅僅是SSL,而且不能相互交流——兩者是不同的協議,只是它們在實現類似目標方面有一些重疊。
SSL本身并沒有給你什么——只有握手和加密。你需要一個應用程序來驅動SSL才能完成實際工作。
SSH本身做了很多有用的東西,允許用戶執行實際的工作。SSH的兩個主要方面是控制臺登錄(替換telnet)和安全文件傳輸(替換FTP),但你還可以通過隧道(安全)其他應用程序的功能,使用戶能夠通過SSH隧道運行HTTP、FTP、POP3以及任何其他應用程序。
沒有來自應用程序的關心的流量,SSL什么都不做,而SSH會在兩臺主機之間創建一個加密隧道,這樣可以通過交互式登錄shell、文件傳輸等方式完成實際工作。
最后評論:HTTPS沒有擴展SSL,它是使用SSL安全地執行HTTP。SSH比SSL做得更多,您可以通過SSH隧道HTTPS!只是因為SSL和SSH都可以做TripleDES并不意味著一個就要基于另一個。
總而言之,SSL提供了握手和加密手段,不是一個獨立的應用層協議,可以基于它修改現有的應用使之安全,而SSH是基于SSL之上的應用層協議,跟一般的通過SSL加密的應用層協議只是簡單的修改socket接口替換為ssl接口的機制不同,SSH是一個完全替換telnet和ftp的應用,并且可以基于之上使用端口轉發功能為其他應用層提供安全通道。