![如何从 .ssh/known_hosts 中提取指纹?但过滤特定的键类型](https://linux22.com/image/211685/%E5%A6%82%E4%BD%95%E4%BB%8E%20.ssh%2Fknown_hosts%20%E4%B8%AD%E6%8F%90%E5%8F%96%E6%8C%87%E7%BA%B9%EF%BC%9F%E4%BD%86%E8%BF%87%E6%BB%A4%E7%89%B9%E5%AE%9A%E7%9A%84%E9%94%AE%E7%B1%BB%E5%9E%8B.png)
我读过这个问题:
答案是有效的,所以我尝试了一些变化:
ssh-keygen -lf ~/.ssh/known_hosts -F 192.168.1.X
ssh-keygen -lvf ~/.ssh/known_hosts -F 192.168.1.X
ssh-keygen -E md5 -lvf ~/.ssh/known_hosts -F 192.168.1.X
ssh-keygen -E sha256 -lvf ~/.ssh/known_hosts -F 192.168.1.X
一切都按预期进行。
观察结果:对于上面的任何命令共享,它显示了所有指纹一起立足于自己的关键类型,例如rsa
,ecdsa
等等......我对此表示同意,但是......这篇文章的原因
问题:
- 如何
ssh-keygen
使用特定的过滤器执行命令key type
?
ssh-keyscan
与选项类似的东西-t
,因此类似:
ssh-keygen -lf ~/.ssh/known_hosts -F 192.168.1.X -? rsa
ssh-keygen -lf ~/.ssh/known_hosts -F 192.168.1.X -? ecdsa
那么可能是什么?
? - 我看到了,ssh-keygen --help
似乎没有这种支持。
答案1
在类似 Korn 的 shell 中,你总是可以这样做:
ssh-keygen -lf <(grep ' ssh-rsa ' ~/.ssh/known_hosts) -F localhost
鱼类也一样:
ssh-keygen -lf (grep ' ssh-rsa ' ~/.ssh/known_hosts|psub) -F localhost
或者其他 shell 假设系统具有/dev/stdin
(目前大多数):
grep ' ssh-rsa ' ~/.ssh/known_hosts | ssh-keygen -lf /dev/stdin -F localhost
假设ssh-rsa
在这些文件行的其他任何地方都找不到known_hosts
(例如在注释或选项中)。