ssh-keyscan 命令如何与 -t 选项配合使用,但对于known_hosts 文件?

ssh-keyscan 命令如何与 -t 选项配合使用,但对于known_hosts 文件?

关于ssh-keyscan命令,如果是带选项执行的-t,如:

ssh-keyscan -t ecdsa 192.168.1.X

返回预期的数据,如:

# 192.168.1.X:22 SSH-2.0-OpenSSH_8.9p1 Ubuntu-3
192.168.1.X ecdsa-sha2-nistp256 XxXxXxX...XxXxXxX

上面显示的命令在同一 LAN 中的 6 个不同 IP 上进行了测试,一切正常。此外,使用ed25519rsa键类型也获得了相同的成功结果,例如:

ssh-keyscan -t ed25519 192.168.1.X
ssh-keyscan -t rsa 192.168.1.X

因此,直到这里-t选项 - 代表类型- 作为过滤器,其工作表现良好。到这里我对这个选项有了清晰的认识-t

笔记

没有过滤器或不指示密钥类型 - 不使用该-t选项 - 因此为:

ssh-keyscan 192.168.1.X

针对特定 IP 返回的数据包括 3 个密钥类型。


现在,在一些教程中我读到了这个-t选项,但现在使用该~/.ssh/known_hosts文件

现在,有了~/.ssh/known_hosts文件,并通过以下命令插入了条目:

ssh-keyscan -H 192.168.1.X >> ~/.ssh/known_hosts

观察该-H选项,它适用于主机名/ip 的哈希值。同一个命令被执行了 6 次,当然是针对同一 LAN 的 6 个不同的 IP。

执行以下命令:

ssh-keyscan -t <KEY> -f ~/.ssh/known_hosts

在哪里钥匙可以是rsaecdsaed25519

输出为(N行左右):

getaddrinfo |1|XxXxXxX=|XxXxXxX=: Name or service not known
...
getaddrinfo |1|ZzZzZzZ=|ZzZzZzZ=: Name or service not known

我认为这是预期的,因为主机名/ips 已被散列。如果我错了,请纠正我

保留当前内容再次添加这 6 个 IP 的相同内容,但没有哈希,因此:

ssh-keyscan 192.168.1.X >> ~/.ssh/known_hosts

观察有选项-H。然后,如果执行命令:

ssh-keyscan -t ecdsa -f ~/.ssh/known_hosts

我现在可以看到两个块中的数据

getaddrinfo |1|XxXxXxX=|XxXxXxX=: Name or service not known

不确定是否符合预期 - 请记住以前的内容仍保留在文件中。因此,我假设上面显示的内容是基于符合过滤请求的密钥类型的。再次,如果我错了请纠正我

(这问题以及这篇文章的原因)

For each IP appears all the keys

理论上我应该只看到基于的数据 -过滤的- 通过-t选项定义密钥类型。

问题

  • 块 2 应该被过滤,对吗?缺少什么或有什么问题?

笔记

本教程使用的命令如下:

ssh-keyscan -t <KEY> -f ~/.ssh/known_hosts | sort -u ~/.ssh/known_hosts

但我想很好地理解管道之前的第一部分(|

相关内容