从客户端来看,SSH提供两种级别的安全验证
第一种级别(基于口令的安全验证)
这种级别是在你每次登陆的之后都需要你提供口令,也就是用户名和密码,这种方式很不安全,极容易是的中间不法分子冒充你想要连接的主机盗取你的口令,然后它再使用这个口令登录服务器
第二种级别(基于密匙的安全验证)
这种级别是我们要说的一种,他需要你生成一对公私钥对,把公钥给了你要连接的服务器,当你对这个服务器发出连接的时候,它会向你发送一个使用这个公钥加密的字符串,你使用私钥解密成功再把它发送回去,如果服务器验证两个字符串是一样的,这就说明它认可了你这个客户端,不会出现“中间人”盗取口令后,冒名登录
主机A要远程登录主机B
1 . 在主机A上生成一个公私钥对,并且把这个公私钥对放在/root/.shh/id_dsa目录中,因为当使用ssh时,ssh会默认去主机的这个目录下查找私钥
ssh-keygen -t dsa -P '' -f /root/.ssh/id_dsa
2 . 将主机A的公钥发送给主机B
scp -r /root/.shh/id_dsa.pub B:~/
3 . 将A的公钥添加到B的授权列表中
cat ~/id_dsa.pub >> ~/.shh/authorized_keys
到这里A与B之间就建立了ssh通信
4 . 当A通过ssh机制远程登录到B时
ssh root@B
5 .上面的命令执行后,B机器就会去查看它的授权列表是否有root@A的公钥
6 .如果有A的公钥,B就会随即生成一个字符串并用A的公钥对这个字符串
进行加密,然后发给A。
如果没有找到A的公钥,就会让你使用口令登录
7 .当你的A接收到B使用A的公钥加密的字符串后,就会使用私钥对其进行解密,解密后在这个字符串发送给B
8 .B会比对这两个字符串,如果一样说明,主机A是主机B认可的机器。不是非法机器