我有一个小型 Proxmox 集群。因此我的 /etc/sshd/ssh_known_hosts 文件看起来像
<host1> ssh-rsa <key1>
<host1ip> ssh-rsa <key1>
<host2> ssh-rsa <key2>
<host2ip> ssh-rsa <key2>
如果我使用“ssh host1”访问这些服务器,一切都很好。
但是,如果我首先使用“ssh -vvv host1.fqdn.org”访问它们,它会询问我是否要向known_hosts添加新密钥,如果我允许,它会抛出以下错误(来自后续运行的日志,其中密钥已添加到known_hosts)
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:<hash>
debug3: hostkeys_foreach: reading file "/root/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /root/.ssh/known_hosts:18
debug3: load_hostkeys: loaded 1 keys from host1.fdqn.org
debug3: hostkeys_foreach: reading file "/etc/ssh/ssh_known_hosts"
debug3: hostkeys_foreach: reading file "/root/.ssh/known_hosts"
debug3: hostkeys_foreach: reading file "/etc/ssh/ssh_known_hosts"
debug3: record_hostkey: found key type RSA in file /etc/ssh/ssh_known_hosts:2
debug3: load_hostkeys: loaded 1 keys from 192.168.37.20
debug1: Host 'host1.fdqn.org' is known and matches the ECDSA host key.
debug1: Found key in /root/.ssh/known_hosts:18
Warning: the ECDSA host key for 'host1.fqdn.ord' differs from the key for the IP address '192.168.xxx.xxx'
Offending key for IP in /etc/ssh/ssh_known_hosts:2
Matching host key in /root/.ssh/known_hosts:18
Are you sure you want to continue connecting (yes/no)? ^C
这对我来说毫无意义。只有一台服务器正在运行一键。无论如何,我可以说服 ssh 不,实际上“host1”和“host1.fqdn.org”是同一台机器,这就是为什么它们具有相同的 IP?
答案1
您可能正在客户端上寻找以下选项 ( ~/.ssh/config
):
CanonicalizeHostname
控制是否执行显式主机名规范化。如果设置为 yes,则 ssh(1) 将尝试使用CanonicalDomains
后缀和规则规范化命令行上指定的主机名CanonicalizePermittedCNAMEs
。
CanonicalDomains
当启用 CanonicalizeHostname 时,此选项指定在其中搜索指定目标主机的域后缀列表
Warning: the ECDSA host key for 'host1.fqdn.org' differs from the key for the IP address '192.168.xxx.xxx'
如果你得到这个似乎很奇怪仅有的当用全名连接时。据我所知,它应该检查保存的 IP 密钥,无论用于连接它的名称是什么。如果与 IP 一起使用的密钥已更改,则您必须使用 清除它ssh-keygen -R 192.168.xxx.xxx
。据我记得,它本身并不清楚,但每次连接到具有该 IP 的主机时都会抱怨。
这可能是故意的,它无法知道 IP 地址是否被具有适当权限的人重复使用,或者是否发生了可疑的情况。