实战证明LINUX系统下密钥对验证的安全性
密钥对验证:要求提供匹配的密钥信息才能通过验证,首先在客户端创建一对密钥文件(公钥、私钥),后把公钥文件放到需要远程连接的服务器中。远程登录时,系统将使用私钥加密身份信息提交给远程主机,远程主机使用对方提交的公钥来解密进行身份验证。
本次实验通过三部分来完成:
1、构建密钥对
2、验证私钥的可靠性
3、验证公钥的可靠性
一、构建密钥对验证SSH体系:
(1)首先在PC1上创建密钥对(私钥文件:id_rsa 公钥文件:id_rsa.pub)
(2)将公钥文件上传至需要远程连接的服务器
(3)使用密钥对验证
1、创建密钥对:ssh-keygen -t rsa 在创建的过程中不设置短语(就是用来加密私钥的密码,因为如果脚本中需要远程登录到另一台服务器时,如果有短语会等待管理员输入短语,导致脚本执行暂停)。
2、拷贝公钥到另一台linux主机(PC2):ssh-copy-id [email protected]
查看 .ssh目录下是否成功创建密钥对,然后把公钥拷贝到对方主机
[[email protected] ~]# ls .ssh
id_rsa id_rsa.pub
3、远程登陆: ssh ro[email protected]
通过上面截图可以看到登陆192.168.80.100并不需要输入密码验证就可以直接连接。因为PC1使用刚才产生的私钥加密了数据,对方收到后使用公钥解密可以解开,身份验证成功。思考一个问题:如果此时PC2远程连接PC1,是需要输入密码还是不需要直接连接成功呢?
二、验证私钥丢失后的安全性
如果私钥丢失,那么得到私钥的用户能否远程连接到 PC2(私钥在产生的时候并没有设置短语加密)
1、把私钥拷贝到另外一台 linux主机(PC3)root中,再把私钥从PC3root中拷贝到普通用户(yus)的目录中,验证root和yus能否远程连接PC2
(1)、cd到 .ssh目录并把id_rsa(私钥)拷贝到PC3中
(2)、在PC3上查看是否拷贝成功,并把id_rsa文件复制到.ssh目录中(如果没有.ssh目录要用mkdir新建一个.ssh目录)
(3)连接PC2:ssh [email protected]
通过截图可以看到已经成功连接到PC2并且不需要密码验证
验证普通用户能否远程连接
1、赋予yus对id_rsa文件的可执行权限
2、并把id_rsa文件复制到yus用户中的.ssh目录下
[[email protected] .ssh]# cp -p id_rsa /home/yus/
[[email protected] .ssh]# su - yus
[[email protected] ~]$ mkdir /home/yus/.ssh
3、登陆到PC2:ssh [email protected]
由以上结论可以得出私钥丢失后,任何得到私钥的都可以登陆到PC2服务器。
三、验证公钥丢失后的可靠性
1、把PC2上的公钥拷贝到PC3上
2、在PC3上把公钥文件复制到.ssh目录中,记得把之前的私钥文件删除
3、使用PC1验证能否远程登陆PC3
通过上面截图可得出结果,公钥丢失后或被窃取后,产生密钥对的服务器就可远程登陆到有公钥的设备上。也就是说哪台设备上有公钥,服务器就能远程连接,而且公钥不论是从服务器上获得的还是从别的设备上窃取的都可使用。所有无论是公钥还是私钥都需要妥善保管。
总结:SSH远程管理通过密钥对验证是通过公钥和私钥互相加密解密完成验证的。通过本次实验可以看出,公钥和私钥都不可丢失,否则就会造成安全问题。同时相对于密码验证来说,密钥对验证要依然要安全许多。在合适的场景下合作恰当的验证方式就好。绝对的安全是不存在的。