如何获取并验证你的SSH密钥指纹?

原创
运维 系统运维
有时你在登录到一台机器之后,发现SSH密钥改变了。有时候你无法确定造成这一问题的原因,那么保险起见,你需要通过验证你的SSH密钥指纹来确认服务器的真实性。本文介绍了如何检查服务器的SSH密钥指纹,以及如果验证指纹不匹配的情况下应如何解决。

【51CTO精选译文】有时你在登录到一台机器之后,发现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流量的去处。

原文:http://administratosphere.wordpress.com/2011/05/28/getting-and-verifying-ssh-fingerprints/

【有关SSH密钥指纹】

为了避免中间人(man-in-the-middle)攻击,管理员在通过SSH远程连接主机的时候,SSH会生成主机指纹并请求保存。服务器的管理员可以发送密钥指纹给客户端,来让其在首次登陆时验证服务器的真实性。在之后的连接中,都会验证与保存的指纹是否匹配。如果不匹配,SSH会给出警告说明密钥变更。

【编辑推荐】

  1. 7条技巧助您增强SSH安全性
  2. 详解Linux下SSH远程文件传输命令scp
  3. 用ClusterSSH管理多台Linux服务器
责任编辑:yangsai 来源: 51CTO.com
相关推荐

2021-02-20 09:03:47

SSH密钥指纹

2012-10-23 09:54:17

2018-02-09 09:00:00

2018-10-08 09:35:59

2017-06-06 13:55:22

LinuxSSHssh_scan

2018-03-16 10:57:06

Linux安全密钥

2023-09-13 22:54:06

2019-06-20 15:43:22

手机行为生物识别UnifyID

2021-11-06 07:42:04

验证开发流程

2012-11-20 11:21:10

2015-06-30 11:25:40

2020-03-03 13:37:23

SSH密钥管理工具开源工具

2021-08-16 10:05:57

GitHub代码开发者

2013-05-03 09:44:52

2011-05-30 14:11:45

2010-06-28 09:46:17

2013-03-15 14:47:13

YubiKeyUSB密钥双因素验证

2021-09-28 14:15:23

Ubuntu 20.0LinuxSSH

2020-10-13 06:59:12

CA签名密钥SSH

2009-07-06 18:18:28

远程攻略SecureCRTSSH 
点赞
收藏

51CTO技术栈公众号