当前位置: 首页 > 科技观察

什么是SSH?原理的详细解释,看这篇文章就够了!

时间:2023-03-12 16:41:26 科技观察

SSH(SecureShell,安全外壳)是一种网络安全协议,通过加密和认证机制实现安全访问和文件传输服务。传统的远程登录或文件传输方式,如Telnet、FTP等,采用明文方式传输数据,存在诸多安全隐患。随着人们对网络安全的重视,这些方式也逐渐被人们所接受。SSH协议通过对网络数据进行加密和校验,在不安全的网络环境中提供安全登录和其他安全网络服务。SSH协议作为Telnet和其他不安全的远程shell协议的安全替代方案,已在世界范围内得到广泛应用,大多数设备都支持SSH功能。SSH端口号是多少?当SSH应用于STelnet、SFTP和SCP时,默认使用的SSH端口为22。当SSH应用于NETCONF时,SSH端口可以指定为22或830。SSH端口支持修改。更改后,所有当前连接将断开,SSH服务器将开始监听新端口。SSH是如何工作的?SSH由服务器和客户端组成。在整个通信过程中,为了建立一个安全的SSH通道,会经历以下几个阶段:(1)连接建立SSH服务器在指定端口监听客户端的连接请求,并发送给服务器发起连接后请求,双方建立TCP连接。(2)版本协商SSH协议目前有SSH1.X(SSH2.0之前)和SSH2.0两个版本。SSH2.0协议与SSH1.X协议相比,结构有所扩展,可以支持更多的认证方式和密钥交换方式,同时提高了服务能力。SSH服务器和客户端协商确定要使用的最终SSH版本号。(3)算法协商SSH支持多种加密算法。双方根据各自支持的算法协商生成会话密钥的密钥交换算法、加密数据信息的加密算法、以及用于数字签名和认证的加密算法。用于数据完整性保护的公钥算法和HMAC算法。(4)密钥交换服务器和客户端通过密钥交换算法动态生成一个共享的会话密钥和会话ID,建立加密通道。会话密钥主要用于后续数据传输的加密,会话ID用于身份验证过程中标识SSH连接。(5)用户认证SSH客户端向服务器发送认证请求,服务器对客户端进行认证。SSH支持以下认证方式:密码(password)认证:客户端通过用户名和密码进行认证,并将加密后的用户名和密码发送给服务器。向客户端返回认证成功或失败的消息。密钥(公钥)认证:客户端通过用户名、公钥、公钥算法等信息向服务器进行认证。password-publickeyauthentication:用户需要同时满足password认证和key认证才能登录。allauthentication:只要满足password认证和key认证其中之一即可。(6)会话请求认证通过后,SSH客户端向服务器发送会话请求,请求服务器提供某种类型的服务,即请求与服务器建立相应的会话。(7)会话交互会话建立后,SSH服务器和客户端交换会话数据信息。使用PuTTY和OpenSSHPuTTY是Windows上一款经典的免费SSH连接工具。通常用于使用SSH协议远程登录设备。最新版本可以到PuTTY官网下载。OpenSSH是SSH协议的开源实现,支持在Unix操作系统上运行。最新版本可以从OpenSSH官网下载。目前Windows10已经包含了OpenSSH客户端和服务器端软件,可以在“设置-应用程序-应用程序和功能-可选功能”中搜索并安装。SSH密钥(一)对称加密和非对称加密提高安全性的基本方法是加密。加密算法通过密钥将明文转换为密文,实现安全传输。SSH在其工作过程中同时使用了对称加密和非对称加密算法,并使用预先生成的SSH密钥来保证信息传输的安全。两种加密算法的加解密过程如下图所示。对称加密算法非对称加密算法对称加密算法使用相同的密钥来加密和解密数据。SSH连接建立过程中生成的会话密钥是对称密钥,对称密钥是客户端和服务端根据共享的部分信息和各自的私有数据,采用密钥交换算法生成的。由于对称加密算法的加解密速度非常快,适合传输大量数据的场景。非对称加密发送和接收需要使用一对关联的SSH密钥、公钥和私钥。私钥由生成方自己保管,公钥可以发送给其他任何请求通信的人。发送方用收到的公钥加密自己的通信内容,只有接收方才能用私钥解密得到通信内容。非对称加密的私钥不需要暴露在网络中,安全性大大增加,但加密和解密的速度要比对称密钥慢很多。SSH连接过程的两个阶段使用非对称加密。一种是在密钥交换阶段,服务器端和客户端都生成自己的临时公钥和私钥,用于为后续的加密通信内容计算出相同的会话密钥。另一种是在用户认证阶段通过客户端的公钥和私钥对来验证客户端的身份,利用只有匹配的私钥才能唯一解密公钥加密的内容的特点。(2)密钥认证SSH用户认证的两种基本方法是密码认证和密钥认证。密码认证就是将你的用户名和密码发送给服务器进行认证。这种方式比较简单,每次登录都需要输入用户名和密码。密钥认证使用公私钥对进行身份验证,实现安全免密码登录。这是一种广泛使用和推荐的登录方式。密钥认证的基本原理是服务器用客户端的公钥加密随机内容,客户端用自己的私钥解密后发送给服务器验证自己的身份。具体过程如下图所示:SSH密钥认证登录过程:SSH客户端在建立SSH连接之前,需要生成自己的公钥和私钥对,并将自己的公钥保存在SSH服务器上。当SSH客户端发送登录请求时,SSH服务器会根据请求中的用户名等信息在本地查找客户端的公钥,并用该公钥加密一个随机数发送给客户端。客户端用自己的私钥对返回的信息进行解密,发送给服务器。服务器验证客户端解密的信息是否正确,如果正确则认证通过。