SSH为什么要为IP地址添加一个known_host条目?


18

我有一个名为nms.example.org的主机。在我/etc/ssh/ssh_known_hosts的主机中,我有一个带RSA密钥的主机条目。该条目以及所有其他条目均由我的配置管理系统管理。

nms.example.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZqfmVPs/XqTS...

另外,我/etc/ssh/ssh_config在特定主机的条目中设置了主机密钥别名。如果我正确理解所有内容,则意味着仅nms.example.org应注意。

Host nms.example.org nms.example nms
    HostKeyAlias nms.example.org
    HostName nms.example.org

为什么然后,当我从客户端连接时,ssh似乎仍然认为它需要使用主机的IP向我的每用户known_hosts添加密钥?

$ ssh nms -v
OpenSSH_6.0p1 Debian-4+deb7u4, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /home/zoredache/.ssh/config
debug1: /home/zoredache/.ssh/config line 61: Applying options for *
debug1: /home/zoredache/.ssh/config line 71: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 84: Applying options for nms
debug1: /etc/ssh/ssh_config line 363: Applying options for *
debug1: Connecting to nms.example.org [104.236.190.144] port 22.
debug1: Connection established.
debug1: identity file /home/zoredache/.ssh/zoredache-20140204.id_rsa type 1
...
debug1: Server host key: RSA 6b:5f:b6:e9:13:c3:b7:39:1e:ec:74:05:33:64:4d:5e
debug1: using hostkeyalias: nms.example.org
debug1: Host 'nms.example.org' is known and matches the RSA host key.
debug1: Found key in /etc/ssh/ssh_known_hosts:104
Warning: Permanently added the RSA host key for IP address '192.0.2.144' to the list of known hosts.
debug1: ssh_rsa_verify: signature correct
...

SSH知道我的主机有效(请参阅Host 'nms.example.org' is known and matches the RSA host key:),为什么它将IP的密钥添加到用户配置文件?

这非常令人讨厌,因为当我重新安装计算机时,我的配置管理系统可以很好地处理主机密钥的收集和分发。但是,在每次使用的known_host文件中,与IP关联的这些遗留冲突密钥会在连接尝试中引起警告,从而阻止脚本连接。

$ ssh nms -v
OpenSSH_6.0p1 Debian-4+deb7u4, OpenSSL 1.0.1e 11 Feb 2013
...
debug1: Local version string SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u4
debug1: using hostkeyalias: nms.example.org
...
debug1: Server host key: RSA 6b:5f:b6:e9:13:c3:b7:39:1e:ec:74:05:33:64:4d:5e
debug1: using hostkeyalias: nms.example.org
debug1: Host 'nms.example.org' is known and matches the RSA host key.
debug1: Found key in /etc/ssh/ssh_known_hosts:104
Warning: the RSA host key for 'nms.example.org' differs from the key for the IP address '192.0.2.144'
Offending key for IP in /home/zoredache/.ssh/known_hosts:25
Matching host key in /etc/ssh/ssh_known_hosts:104
Are you sure you want to continue connecting (yes/no)?

如何防止ssh在每个用户known_hosts中缓存此基于IP的值?还是出于某种安全原因,我不得不忍受这种令人讨厌的行为?这也让我感到沮丧,因为几个服务器具有一些动态IP地址。我的配置管理处理DNS更新。但是我将这些遗留在每个IP主机密钥中,这些密钥填充了每个用户的known_host文件。

Answers:


22

我认为是要做好CheckHostIP工作。

如果此标志设置为“ yes”,则ssh(1)将另外检查known_hosts文件中的主机IP地址。这允许ssh检测主机密钥是否由于DNS欺骗而改变。如果选项设置为“ no”,则不会执行检查。默认值为“是”。

使用此选项时,如果配置错误或受到攻击,您会得到更好的诊断,但实际上并不能以我能想到的任何方式提高安全性。

如果关闭电源CheckHostIP,则按名称连接到新主机时,SSH(从OpenSSH 6.7p1开始)不会记录IP地址。因此,将其添加到您的.ssh/config

CheckHostIP no

Host如果只想为特定主机(特别是具有动态IP地址的主机)将其关闭,则可以将其添加到部分中。


是的,这是我需要的设置。
Zoredache

尽管我同意您所说的@Gilles的所有内容,但从技术上讲,我会(为了更好地讨论)CheckHostIP yes 提高安全性...如果用户确切知道它在做什么,系统如何使用此参数以及隐含信任的概念。因此,我真的会割头发,我不会做的...我将其保存起来以确保安全
-se
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.