如何使 ssh 将 known_hosts 匹配到 host/ip:port 而不仅仅是 host/ip?

Pro*_*ody 9 ssh known-hosts

我有两台机器在防火墙后面,ssh 端口转发到 2201 和 2202。

当我

ssh host -p 2201  
Run Code Online (Sandbox Code Playgroud)

它询问我是否信任这台机器,我说是,它被添加到 ~/.ssh/known_hosts

然后我

ssh host -p 2202  
Run Code Online (Sandbox Code Playgroud)

它不让我,因为这个 IP 中已经有一个条目~/.ssh/known_host:1(当我开始时文件是空的,所以第 1 行是之前 ssh 运行添加的那个)。

这发生在 CentOS 5.4 上。

在其他发行版上(我尝试过 Arch),ssh 似乎也将 known_hosts 与端口匹配,因此我可以在同一主机/ip 上为多个端口设置多个指纹而不会出现任何问题。

我怎样才能为 CentOS 获得同样的行为?

我找不到任何东西man ssh_config(或者至少在没有禁用指纹检查的情况下)。

我找到了一个临时解决方案。如果该known_hosts文件具有多个相同 IP 的条目,它会在得出错误结论之前检查所有条目。但我真的很讨厌这是解决方案。

use*_*686 8

~/.ssh/config

主机 foohost-2201
    主机名 foohost.domain.tld
    # 这应该符合 OpenSSH 5 中使用的格式。
    HostkeyAlias "[foohost.domain.tld]:2201"
    用户名
    2201端口

说真的,升级。


Ign*_*ams 5

CentOS 5 附带的 OpenSSH 版本不支持known_hosts. 如果您想让它工作,您将需要构建并安装更新的版本。