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的应用,并且可以基于之上使用端口转发功能为其他应用层提供安全通道。