- SSH用于远程登录和数据加密,SSL用于数据加密;https使用了SSL协议进行数据加密;
- SSH和SSL都是采用RSA非对称加密,两者都有公钥和私钥,公钥加密的数据只要私钥可以解开,同样私钥加密的只有公钥可以解开,公钥不能推断出私钥;
- SSH有两种安全验证:
(1)口令安全验证(存在中间人攻击)(类似https)
(2)秘钥安全验证(github、getee)
以下是https(SSL)、SSH口令安全验证、SSH密钥安全验证的过程图:
问题:主动权在服务端,存在中间人劫持,伪造服务器通过自己的RSA获取用户的口令,再去服务端登录,进行篡改,因此要在第一次验证时手动效验服务端发来的公钥是否和服务端储存的公钥一致。
https和SSH的口令验证类似,公钥和私钥都存在于服务端,区别在于,客户端对服务端的效验机制,https客户端会通过CA机构来效验证书(公钥)的真实性,而口令验证只能在首次连接时去服务器对比公钥的一致性。