说起电脑操作系统,人们第一个想到的恐怕就是windows系统,但其实还有很多操作系统深受人们喜爱,Linux就是其中一种。而说起Linux系统,就不得不提及SSH,可能很多人对SSH还不太熟悉,那么今天我们就来简单了解一下吧。
什么是SSH?
SSH(Secure Shell,安全外壳)是一种网络安全协议,通过加密和认证机制实现了设备之间的安全保障。
传统远程登录或文件传输方式,都使用明文传输数据,存在很多的安全隐患。随着人们对网络安全的重视,这种方式已经慢慢不被人接受。而SSH协议通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的登录和其他安全网络服务。目前SSH协议已经被全世界广泛使用,大多数设备都支持SSH功能。
SSH是如何工作的?
SSH由客户端和服务器组成,在整个通信过程中,为建立安全的SSH通道,会经历如下几个阶段:
- 连接建立
SSH服务器在指定的端口侦听客户端的连接请求,在客户端向服务器发起连接请求后,双方建立一个TCP连接。
- 版本协商
SSH协议目前存在SSH1.X(SSH2.0之前的版本)和SSH2.0版本。SSH2.0协议相比SSH1.X协议来说,在结构上做了扩展,可以支持更多的认证方法和密钥交换方法,同时提高了服务能力。SSH服务器和SSH客户端通过协商确定最终使用的SSH版本号。
- 算法协商
SSH支持多种加密算法,双方根据各自支持的算法,协商出最终用于产生会话密钥的密钥交换算法、用于数据信息加密的加密算法、用于进行数字签名和认证的公钥算法以及用于数据完整性保护的HMAC算法。
- 密钥交换
服务器和客户端通过密钥交换算法,动态生成共享的会话密钥和会话ID,建立加密通道。会话密钥主要用于后续数据传输的加密,会话ID用于认证过程中标识该SSH连接。
- 用户认证
SSH客户端向服务器端发起认证请求,服务器端对客户端进行认证。
SSH密钥中的对称加密和非对称加密
提高安全性的基本方式就是加密,加密算法通过密钥将明文转换为密文进行安全传输。SSH在工作过程中结合使用了对称加密和非对称加密两种类型的算法,通过事先生成的SSH密钥来保证信息传输的安全性。
对称加密算法使用同一个密钥对数据进行加密和解密。SSH连接建立过程中生成的会话密钥就是对称密钥,该对称密钥是由客户端和服务器端基于共享的部分信息和各自的私有数据使用密钥交换算法分别生成的。因为对称加密算法加解密的速度很快,所以适用于传输大量数据的场景。
非对称加密的发送和接收需要使用一对关联的SSH密钥,公钥和私钥。私钥由生成的一方自己保管,公钥可以发送给任何请求通信的其他人。发送方用收到的公钥对自己的通信内容进行加密,只有接收方可以使用私钥进行解密获取通信内容。非对称加密的私钥不需要暴露在网络中,安全性大大增加,但是加解密的速度比对称密钥慢得多。
SSH连接过程中的两个阶段使用了非对称加密。一个是在密钥交换阶段,服务器和客户端都生成了自己临时的公钥和私钥,用于计算出同一个用于后续加密通信内容的会话密钥。另外一个就是在用户认证阶段,利用只有匹配的私钥可以唯一解密公钥加密的内容这一特点,通过客户端的公钥私钥对验证客户端的身份。
免责声明:素材源于网络,如有侵权,请联系删稿。