有时你在登录到一台机器之后,发现SSH密钥改变了。这种情况可能是由于中间人攻击导致,但更多的情况下,是因为主机被重建,生成了新的SSH密钥(所以大家重建服务器的时候要养成保存恢复SSH密钥的好习惯)。 那么,应该如何检查指纹? 你可以直接通过网络从远程服务器上获取公共密钥: ssh-keyscan -p 22 -t rsa,dsa remote_host > /tmp/ssh_host_rsa_dsa_key.pub #使用你的主机名或IP地址替换remote_host字段然后你就可以通过这个文件生成指纹: ssh-keygen -l -f /tmp/ssh_host_rsa_dsa_key.pub不过,如果你的密钥在其他因素下改变,而你想要探索它改变的原因,那么网络的方式是不够的。想办法通过其他方式登录到真机上(比如通过管理控制台或KVM控制台),然后直接生成指纹: ssh-keygen -lf /etc/ssh/ssh_host_dsa_key ssh-keygen -lf /etc/ssh/ssh_host_rsa_key然后,与你通过网络得到的指纹进行对比。如果它们匹配,那么万事ok;如果不匹配,那么你可能有麻烦了。 如果指纹不匹配,那么你应该先做一个针对ARP请求的网络扫描,看看有哪个IP地址回应了ARP请求。在ping的时候扫描一下看看有没有ARP请求。如果有两个主机,那么它们会为一个ARP条目而"互掐"起来,你应该能看到两个回应。 一旦你知道了这个神秘主机的以太网地址,就可以通过路由(或交换机)接口上跟踪到ARP流量的去处。 【有关SSH密钥指纹】 为了避免中间人(man-in-the-middle)攻击,管理员在通过SSH远程连接主机的时候,SSH会生成主机指纹并请求保存。服务器的管理员可以发送密钥指纹给客户端,来让其在首次登陆时验证服务器的真实性。在之后的连接中,都会验证与保存的指纹是否匹配。如果不匹配,SSH会给出警告说明密钥变更。 (责任编辑:IT) |