我的主目录中的 .ssh 文件夹中的known_hosts 文件与 /etc/ssh 中的文件有什么区别?

我的主目录中的 .ssh 文件夹中的known_hosts 文件与 /etc/ssh 中的文件有什么区别?

/home/XXX/.ssh/known_hosts我对 SSH 没有深入的了解,并且我对(或~/.ssh/known_hosts) 和/etc/ssh/ssh_known_hosts文件之间的关系有点困惑。

有人可以解释一下吗?

答案1

known_hosts主目录中的文件是 ssh 自动存储每个新服务器身份的位置访问。known_hosts当然,其他用户也会有自己的文件。

中的文件/etc是一样的,只不过它只能手动写入,并且在系统的所有用户之间共享。

该文件的典型用途/etc是系统管理员输入组织内所有服务器的身份。这样,每个用户在第一次访问本地资源时不必回答“是”,但更重要的是,它提高了安全性。

该文件的目的known_hosts是通过确保您连接到上次连接的同一服务器(它没有被 DNS 黑客或其他东西偷偷地交换)来防止中间人攻击。弱点known_hosts在于,如果发生以下情况,它无法检测到中间人:第一次你连接。通过用已知的良好签名预先填充/etc文件,管理员可以确保他的用户不会被窥探。

答案2

来自SSH(1)手册页,文件部分:

~/.ssh/known_hosts

    包含用户已登录的所有主机的主机密钥列表,这些主机尚未包含在系统范围内的已知主机密钥列表中。有关此文件格式的更多详细信息,请参阅 sshd(8)。

  ...

/etc/ssh/ssh_known_hosts

    已知主机密钥的系统范围列表。该文件应由系统管理员准备,以包含组织中所有计算机的公共主机密钥。它应该是世界可读的。有关此文件格式的更多详细信息,请参阅 sshd(8)。

这是 sshd(8) 的链接。

答案3

/etc/ssh/ssh_known_hosts 和 文件 $HOME/.ssh/known_hosts 包含所有已知主机的主机公钥。全局文件应由管理员准备(可选),并且自动维护每用户文件:每当用户连接到未知主机时,其密钥就会添加到每用户文件中。

相关内容