ssh没有读取.ssh / known_hosts里面的特定ssh-keyscan条目?

时间:2013-08-26 19:44:53

标签: ssh

奇怪的问题.. 我怀疑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和主机名?

最后编辑:清理过程使其更简单

提前致谢,
马克

2 个答案:

答案 0 :(得分:1)

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

ssh-keygen -H

来自ssh-keygen的手册页:

  

-H哈希一个known_hosts文件。这将取代所有主机名和            在指定文件中具有散列表示的地址;            原始内容将移动到带有.old后缀的文件。            这些哈希值通常可以由ssh和sshd使用,但它们可以使用            如果文件的内容不透露,则不显示识别信息            披露。此选项不会修改现有的哈希主机名            因此可以安全地使用混合散列和非混合的文件            哈希的名字。

然后你可以像这样在known_hosts中添加新条目:

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

你应该完成。

答案 1 :(得分:0)

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

联机帮助页中定义的ssh-keyscan的一般语法是

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

在第一种情况下,您可以通过ip或主机名指定主机。在第二种情况下,您指定名单。要使ssh-keys可以正常工作,它应该在名单之前提供 addrlist

这就是命令的样子

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