背景
在开篇之前,让我们先对 SSH 协议有个宏观的大致了解,这样更有利于我们对本文的加深了 解。首先要提到的就是计算机网络协议,所谓计算机网络协议,简单的说就是定义了一套标准和规则,使得不 同计算机之间能够进行正常的网络通信,不至于出现在一台机器上发出的指令到另一台机器上成了不可认的乱 码,SSH 就是众多协议的其中之一。经典的七层 OSI 模型(Open System Interconnection Reference Model )出现后,大大地解决了网络互联的兼容性问题,它将网络划分成服务、接口和协议三个部分,而协议就是说 明本层的服务是如何实现的。SSH、Telnet 协议则主要被使用在用户层中(如图 1 深色部分所示),即应用 层、表现层和会话层。
图 1. 七层 OSI 模型
介绍 SSH
什么 是 SSH
SSH(Secure Shell Protocol)是在一个不安全的网络,进行安全远程登录和其他安全网络服 务的协议。这个定义出自于 IETF(Internet Engineering Task Force)。在 TCP/IP 五层模型中,SSH 是被 应用于应用层和传输层的安全协议。
SSH 的优点
传统的网络传输,如:Telnet、FTP 等,采用 的是明文传输数据和口令,这样很容易被黑客这样的中间人嗅探到传输过程中的数据,大大降低了网络的通信 安全。而 SSH 协议则采用数据加密的方式建立起一个安全的网络传输信道,增强了数据在网络传输过程中的 安全性。数据加密程度的复杂,会导致占用更多的网络资源。SSH 会对加密数据进行一定的压缩操作,从而减 缓对网络带宽的占用。总结起来,SSH 的优点如下:
数据加密,提高安全性
数据压缩,提高网络的传输速度。
SSH 的架构
在对 SSH 有了一个初步的认识之后,我们来看看 SSH 协议是如何做到数据的安全通信 。首先来看下 SSH 协议的主要架构:
图 2. SSH 协议的构成
传输层协议: 通常运行 在 TCP/IP 的上层,是许多安全网络服务的基础,提供了数据加密、压缩、服务器认证以及保证数据的完整性 。比如,公共密钥算法、对称加密算法、消息验证算法等。
用户认证协议:运行在 SSH 协议的传输层 之上,用来检测客户端的验证方式是否合法。
连接协议:运行在用户认证层之上,提供了交互登录会 话、远程命令的执行、转发 TCP/IP 连接等功能,给数据通讯提供一个安全的,可靠的加密传输信道。
SSH 的应用
在实际的工作中,很多目标机器往往是我们无法直接操作的,这些机器可能是一个 公司机房的服务器,也可能是一个远在大洋彼岸的客户环境。这时候我们必须要远程登录到目标机器,执行我 们需要的操作,这样不仅降低了运营成本,也提高了执行效率。我们常见的远程登录协议有 SSH、Telnet 等 。如上文所提到,Telnet 使用的是明文传输,这样对别有用心的“中间人”来说就有了可乘之机,相对 Telnet 协议,SSH 协议的安全性就高了很多。这样的特性,也使得 SSH 协议迅速被推广,很多的大型项目中 都或多或少的使用到了这个协议。下面本文主要讨论 SSH 协议中用户认证协议层,并且下文中统一将远程机 器称为服务器(Server),本地机器称为客户端 (Client)。