ssh没有读取.ssh/nknown_hosts中的特定ssh密钥扫描条目



奇怪的问题。。我怀疑ssh密钥扫描中有一个错误,但可能我错了。。

ssh-keyscan -H -t ecdsa host1,1.1.1.1 >> ~/.ssh/known_hosts

该命令将howt1的指纹提取到known_hosts中(主机名和IP正确散列),但是。。。但是,当我使用主机名或ip ssh进入主机1时,系统会提示我接受主机的公钥。由于我"已经"把它放在那里了,我认为这是一个错误。

编辑:我应该提到的是,如果我不在known_hosts文件中散列主机名和ip(ssh keyscan不带"-H"选项),那么一切都可以。(-H记录在man-ssh密钥扫描中)

有人知道怎么解决这个问题吗?还是出于某种奇怪的原因,它被认为是这样工作的?

这可能是因为known_hosts中的条目在其哈希中同时存在,后来当它比较名称或IP时,它在技术上不匹配,因为它不是被比较的IP和主机名的"两者"吗?

上次编辑:清理了东西,使其更简单

提前感谢,
Marc

如果您想将散列条目添加到known_hosts文件中,您应该首先对其进行散列:

ssh-keygen -H

来自ssh keygen的手册页:

-H对known_hosts文件进行哈希。这将替换所有主机名和在指定文件内具有散列表示的地址;原始内容被移动到一个后缀为.old的文件中。ssh和sshd通常可以使用这些散列,但它们确实可以如果文件的内容公开。此选项不会修改现有哈希主机名因此,在混合了哈希和非哈希的文件上使用是安全的-散列名称。

然后你可以向你的known_hosts添加新条目,如下所示:

ssh-keyscan -Ht ecdsa [hostname],[IP address] >> known_hosts

你应该完成。

您在示例中使用了不同的语法。

手册页中定义的ssh-keyscan的一般语法为

 ssh-keyscan [-46Hv] [-f file] [-p port] [-T timeout] [-t type]
             [host | addrlist namelist] ...

在第一种情况下,您可以通过ip或主机名指定主机。在第二种情况下,指定名称列表。为了让ssh密钥扫描正常工作,它应该在名称列表之前提供一个addrlist

这就是命令应该看起来像的样子

 ssh-keyscan -H -t ecdsa 1.1.1.1 host1,1.1.1.1 >> ~/.ssh/known_hosts

最新更新