3.2 非对称加密
非对称加密有两个密钥:公钥和私钥。数据使用公钥加密之后,只能使用私钥进行解密,而私钥被破解的概率很低很低,详情见下图。
图3-2 非对称加密的过程
由于私钥是服务器独有的,所以即使客户机的登录信息被截取,也是没有私钥进行解密的,保证了数据的安全性,充分利用了非对称加密的特点。
3.3 非对称加密的缺陷
非对称加密就一定安全了么?答案是否定的。如果黑客冒充了服务器,拦截了登录请求,并且把自己的公钥发送给客户机,再使用自己的私钥对密码进行解密,就会获取到客户机的登录信息,从而造成数据泄露,这就是中间人攻击,详情见下图。
图3-3 非对称加密的缺陷
对于上诉的缺陷,SSH有两种解决方法,第一种是基于口令的认证;另一种是基于公钥的认证,俗称SSH免密登录。
3.4 基于口令的认证
根据图3-3所示,我们可以发现问题的关键点就在于客户机没法分辨出公钥是否是自己想要登录的服务器给的公钥,所以说客户机只能自己对公钥进行确认,通常第一次登录的时候会出现下面的提示。
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)?
提示的内容是在说,无法确定ssh-server.example.com (12.18.429.21)主机的真实性,但是知道其公钥指纹,是否继续连接。
之所以使用公钥指纹,是因为RSA算法生成的公钥长达1024位,但是通过对公钥进行hash得到的128位的指纹就很容易进行比较。
输入yes之后,会出现下面的提示。
1 Warning: Permanently added 'ssh-server.example.com,12.18.429.21' (RSA) to the list of known hosts.
2 Password: (enter password)
提示在说,该主机已经添加到known hosts的列表里了,接着输入密码,按照图3-2的流程走就行了。