ssh原理

加密

​ 主要是为了确保数据传输中的安全。非对称加密加对称加密。非对称加密为了确保公共口令的传输安全。而后来用公共口令来加密,则是为了效率。前一阶段的非对称加密依赖服务器的一对公钥和密钥。

​ 为了避免中间人攻击,对称密钥不被窃取。在连接新的主机的时候,ssh协议还会发送标志主机身份的公钥指纹给客户端。需要客户端自己来先确定主机的身份。需要先登录到主机上,cd /etc/ssh,然后通过kengen -lf filenName查看两者是否匹配。同意后,该主机就会被加入到known_hosts文件中,再次登录时就不必再验证。

认证

​ 认证是在加密的基础之上进行的,即整个通信过程以及加密了。主要目的是为了确认该登录者是否有权限。

  1. 直接密码认证的方式。

​ 简单来说就是,服务做一个密码比对即可。优点是简单。缺点是有被暴破的风险,而且容易遭受中间人攻击。

  1. 通过添加公钥的方式

​ 相比于直接密码登录的方式,这种方式,服务器主要通过”key challenge”来确认用户的身份(理论上只有拥有密钥的用户才能通过“key challenge”)

​ “key challenge”流程

而本地还可以通过passphrase(就是解码private key的密码) 来保护private key.进一步提高安全性。

​ 当然这种方式比较麻烦,而且必须先通过其他方式登录到远程服务器,将客户端的公钥传到服务器(为了安全再禁掉密码登录的方式)。

​ [这里只用到了客户端的private key和 public key]