奇怪的问题.. 我怀疑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和主机名?
最后编辑:清理过程使其更简单
提前致谢,
马克
答案 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