3

奇怪的问题..我怀疑 ssh-keyscan 中有一个错误,但也许我错了..

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

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

编辑:我应该提到,如果我不在 known_hosts 文件中散列主机名和 ip(不带“-H”选项的 ssh-keyscan),那么一切正常。(-H 记录在 man ssh-keyscan 中)

有谁知道如何解决这一问题?或者这是出于某种奇怪的原因而假设的工作方式?

是否可能是因为 known_hosts 中的条目在它的哈希中以及后来比较名称或 IP 时,它在技术上不匹配,因为它不是“同时”比较的 ip 和主机名?

最后编辑:清理东西以使其更简单

提前致谢,
马克

4

2 回答 2

2

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

ssh-keygen -H

来自 ssh-keygen 的手册页:

-H 散列 known_hosts 文件。这将使用指定文件中的散列表示替换所有主机名和地址;原始内容被移动到带有 .old 后缀的文件中。ssh 和 sshd 可以正常使用这些哈希值,但如果文件的内容被泄露,它们不会泄露识别信息。此选项不会修改现有的散列主机名,因此可以安全地用于混合散列和非散列名称的文件。

然后您可以像这样向您的 known_hosts 添加新条目:

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

你应该完成了。

于 2015-05-10T12:02:08.210 回答
1

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

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

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

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

这就是命令的样子

 ssh-keyscan -H -t ecdsa 1.1.1.1 host1,1.1.1.1 >> ~/.ssh/known_hosts
于 2013-08-27T01:55:56.230 回答