SSH
SSH(Secure Shell,安全外壳)是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。传统远程登录和文件传输方式。Telnet、FTP,使用明文传输数据
在未建立SSH连接时,SSH服务器会在指定端口侦听连接请求,SSH客户端向SSH服务器该指定端口发起连接请求后,双方建立一个TCP连接,后续会通过该端口通信。
默认情况下,SSH服务器使用端口号22。
工作流程:
加密算法:
SSH服务器和客户端通过密钥交换算法,动态生成共享的会话密钥和会话ID,建立加密通道。会话密钥主要用于后续数据传输的加密,会话ID用于在认证过程中标识该SSH连接。![ssh02]
SSH密钥交换
-
SSH服务器生成素数G、P、服务器私钥b,并计算得到服务器公钥y=(G^b)%P。
-
SSH服务器将素数G、P、服务器公钥y发送给SSH客户端。
-
SSH客户端生成客户端私钥a,计算得到客户端公钥x=(G^a)%P。
-
SSH客户端将客户端公钥x发送给SSH服务器。
-
SSH服务器计算得到对称密钥K=(xb)%P,SSH客户端计算得到对称密钥K=(ya)%P,数学定律可以保证SSH服务器和SSH客户端生成的对称密钥相同。
SSH支持密码(password)认证、密钥(publickey)认证、password-publickey认证(双认证)、all认证(单认证)
密码认证
SSH密码认证登录流程
-
SSH客户端向SSH服务器发送登录请求。
-
SSH服务器将服务器公钥发送给SSH客户端。
-
SSH客户端输入密码,使用服务器公钥加密密码后发送给SSH服务器。
-
SSH服务器收到密文,使用服务器私钥解密得到密码。验证密码是否正确,如果正确则认证通过。
避免攻击者伪装成ssh服务器获取登录密码的方法:确定公钥后,客户端会在本地保存,即公钥指纹,下次访问时,SSH客户端将会核对SSH服务器发来的公钥和本地保存的是否相同。
密钥认证
为避免中间人攻击,可以使用安全性更高的密钥认证。
SH密钥认证登录流程
-
在进行SSH连接之前,SSH客户端需要先生成自己的公钥私钥对,并将自己的公钥存放在SSH服务器上。
-
SSH客户端向SSH服务器发送登录请求。
-
SSH服务器根据请求中的用户名等信息在本地搜索客户端的公钥,并用这个公钥加密一个随机数发送给客户端。
-
SSH客户端使用自己的私钥对返回信息进行解密,并发送给SSH服务器。
-
SSH服务器验证SSH客户端解密的信息是否正确,如果正确则认证通过。!
SSH和SSL的区别:
SSH和SSL都是网络安全协议,通过加密和认证提升两台设备间传输数据的安全性。但SSH和SSL的生效方式和服务目标存在差异。
SSH在两台设备间创建安全隧道,使这两台设备间可以安全地发送命令、传输数据等。例如,客户端通过SSH远程登录到一台服务器上,就可以安全地远程管理这台服务器,在服务器上执行想要的命令。
SSL则是使用SSL证书保证两台设备间安全地传输数据,而不是像SSH那样可以执行命令。例如,用户通过浏览器访问某安装了SSL证书且启用了HTTPS的服务器,浏览器和服务器之间可以安全地传输数据。
标签:公钥,认证,密钥,服务器,客户端,SSH From: https://www.cnblogs.com/huangshisan/p/17737815.html