今天我通过 ssh 和 sftp 客户端连接我的 Centos 7 机器,两者都表明服务器 RSA 密钥指纹已更改。
我检查了所有日志是否有可疑活动,但没有发现任何异常情况。
是否有一个合乎逻辑的解释可以解释这种变化?
答案1
openssh 客户端使用用户给定名称根据known_hosts 文件对服务器进行身份验证。名称可以是字母或 IP 地址。
在前一种情况下,它与 ssh_config 中的主机条目匹配,如果主机条目设置了 HostName,则它用于检查known_hosts 文件。如果匹配的主机条目没有设置主机名,则会根据known_hosts 文件检查用户在cli 上提供的字母。
在后一种情况下,将检查 IP 地址。因此,单个主机可能有多个条目,每个条目都匹配用户提供的“字符串”。发生这种情况是因为用户可以通过 ip、fqdn、ssh_config 文件中的主机条目或只是 dns 前缀进行连接。当用户以不同方式引用同一台机器时,通常会出现警告。
上述警告表示主机未知。这意味着客户端之前没有连接到该主机这个名字或者客户端之前已经连接到该主机这个名字但主机的“主机密钥”未缓存或已缓存,并且缓存的密钥已被删除,或者缓存已损坏或删除。
如果您之前已通过 example.com 连接到该主机并缓存了服务器主机密钥,则下次您通过 example.com 连接到该主机时,如果服务器密钥与缓存的密钥不同,客户端会尖叫远程主机标识已更改, 可能的中间猴子攻击。
openssh 服务器使用四种类型的密钥 rsa、dsa、ecdsa 和 ed25519。这意味着客户端必须缓存所有适合的密钥。
必须建立服务器密钥指纹数据库来应对这种情况。ssh-keygen -lf ssh_host_rsa_key.pub >> $HOME/example.com_host_key.txt
对于每个键。