关于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 上进行了测试,一切正常。此外,使用ed25519
和rsa
键类型也获得了相同的成功结果,例如:
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
在哪里钥匙可以是rsa
或ecdsa
或ed25519
输出为(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
但我想很好地理解管道之前的第一部分(|
)