/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/known_hosts
包含用户已登录的所有主机的主机密钥列表,这些主机尚未包含在系统范围内的已知主机密钥列表中。有关此文件格式的更多详细信息,请参阅 sshd(8)。
...
/etc/ssh/ssh_known_hosts
已知主机密钥的系统范围列表。该文件应由系统管理员准备,以包含组织中所有计算机的公共主机密钥。它应该是世界可读的。有关此文件格式的更多详细信息,请参阅 sshd(8)。
答案3
/etc/ssh/ssh_known_hosts
和 文件 $HOME/.ssh/known_hosts
包含所有已知主机的主机公钥。全局文件应由管理员准备(可选),并且自动维护每用户文件:每当用户连接到未知主机时,其密钥就会添加到每用户文件中。