SSH两种认证方式原理和过程

SSH是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。虽然任何网络服务都可以通过SSH实现安全传输,SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。

SSH以非对称加密方式实现身份验证,主要有以下两种:

  • 基于密码的安全验证

  • 基于密钥的安全验证

1.基于密码的安全验证

是使用自动生成的公钥-私钥对来简单地加密网络连接,随后使用密码认证进行登录,如图所示。

身份认证通过,然后是交换会话密钥(对称加密),使用会话密钥对之后传递的数据进行加密,即传输数据加密,过程如下。:使用对称加密效率高。

  客户端生成会话数据加密 sess_key,使用服务端公钥 ser_rsa.pub 加密后传输给服务器(会话密钥),

  服务器获取到后使用私钥 ser_rsa 解密,得到sess_key,

  客户端和服务器通过 sess_key 进行会话数据安全传输,

  即客户端和服务器用sess_key 分别对传输数据进行加密和解密。

但是,这种认证方式无法避免“中间人”攻击,可能会有别的服务器在冒充真正的服务器。

2.基于密钥的安全验证

客户端生成一对公钥和私钥,并将自己的公钥发送到服务器上,认证过程不需要输入密码,避免“中间人”的攻击,如图所示。

认证成功后,使用对称加密的方式传输数据。

风险点:在第一次将客户端公钥发送到服务器这一步,还是有可能受到“中间人”的攻击,如果首次连接没有中间人,之后的连接就无需担心中间人,因为中间人给出的公钥和服务端给出的公钥相同的可能性可以忽略。

猜你喜欢

转载自www.cnblogs.com/zlw-xyz/p/12893080.html