SSH

SSH是一种协议, 有多种的实现方法, 开源实现的OpenSSH, 也有商业版本.

加密的方式:

  1. 对称加密

image.png
image.png
对称加密的加密程度高, 很难破解, 一旦一个Client端的密钥被窃取, 那么整个系统的安全性就没有了.

  1. 非对称加密

image.png
私钥是Server端独有, 就算用户的登陆信息或者公钥在网络传输中被窃取, 也没有私钥进行解密, 保证了安全

中间人攻击

image.png

如何解决中间人攻击

问题在于Server如何对公钥进行认证, https中可以额通过CA进行公证, 但是SSH的公钥和私钥都是自己生成的, 没办法公正, 只能通过client端自己对公钥确认, 通常在第一次登陆的时候, 系统会出现以下的提示:

  1. The authenticity of host 'ssh-server.example.com (12.18.429.21)' can't be established.
  2. RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
  3. Are you sure you want to continue connecting (yes/no)?

之所以用fingerprint代替key,主要是key过于长(RSA算法生成的公钥有1024位),很难直接比较。所以,对公钥进行hash生成一个128位的指纹,这样就方便比较了。

如果被确认, 那么会将主机名添加到Client端的know_hosts文件中

免密登录

image.png