保护known_host文件不被写入-好主意还是坏主意?

保护known_host文件不被写入-好主意还是坏主意?

我想保护known_host文件不被写入所以我想在我的Linux red-hat服务器上执行以下步骤

Cp /dev/null   /root/.ssh/known_hosts
chattr +i /root/.ssh/known_hosts

我想这样做是因为我想防止登录任何目标机器失败,因为有时我们会收到警告 -远程主机标识已更改错误,登录失败

但是我不确定我的解决方案(在 known_host 上写入保护)是否是一个好主意,以及对 Linux 系统有什么负面影响?

或者也许这个解决方案是一个很好的解决方案,可以保持已知主机文件为空?

这里的成员有何想法?

答案1

恕我直言,这不是一个好主意(见下文)。

以下命令将从 known_hosts 中删除主机的违规密钥

  ssh-keygen -R <host>

例如 ssh-keygen -R my_old_client

为什么这不是一个好主意可以从以下方面来论证man ssh(向下搜索你就能读到):

此外,服务器必须能够验证客户端的主机密钥(请参阅下面 /etc/ssh/ssh_known_hosts 和 ~/.ssh/known_hosts 的描述)允许登录这种身份验证方法可以消除由于 IP 欺骗、DNS 欺骗和路由欺骗而造成的安全漏洞。 [管理员注意:/etc/hosts.equiv、~/.rhosts 以及 rlogin/rsh 协议一般都是本质上不安全的,如果需要保证安全性,应该将其禁用。]


再说几句话:如果ssh提示你机器钥匙它被改变了,通常是因为你重新安装了远程控制在该机器上,或者你强制重建了密钥。然而,它不再是ssh 密钥上次使用的密钥...可能是另一台计算机试图窃取该身份。如果您确定是同一台计算机,则可以删除/更新有问题的密钥并继续。

总是man ssh关于它是如何工作的:

ssh 自动维护并检查包含所有主机标识的数据库它曾经被使用过。
主机密钥存储在用户主目录中的 ~/.ssh/known_hosts 中。此外,该文件/etc/ssh/ssh_known_hosts会自动检查已知主机。任何新主机都会自动添加到用户的文件中。 如果主机标识发生变化,ssh 会发出警告并禁用密码验证,以防止服务器欺骗或中间人攻击,否则可能会被用来规避加密。

严格主机密钥检查选项可用于控制主机密钥未知或已更改的机器的登录。

相关内容