是否可以在known_hosts文件中找到主机?

是否可以在known_hosts文件中找到主机?

我想查看known_hosts 文件中有哪些主机,但它似乎不可读。可以读吗?

更具体地说,有一个我可以通过多个名称连接到的主机,我想从我已知的主机文件中找出我期望的指纹。

更新:我正在使用 OpenSSH_5.3p1 Debian-3ubuntu7,OpenSSL 0.9.8k 2009 年 3 月 25 日

我的known_hosts 文件中的一行看起来像这样,

|1|guO7PbLLb5FWIpxNZHF03ESTTKg=|r002DA8L2JUYRVykUh7jcVUHeYE= ssh-rsa AAAAB3NzaC1yc2EAAFADAQABAAABAQDWp73ulfigmbbzif051okmDMh5yZt/DlZnsx3DEOYHu3Nu/+THJnUAfkfEc1XkOFiFgbUyK/08Ty0K6ExUaffb1ERfXXyyp63rpCTHOPonSrnK7adl7YoPDd4BcIUZd1Dk7HtuShMmuk4l83X623cr9exbfm+DRaeyFNMFSEkMzztBYIkhpA2DWlDkd90OfVAvyoOrJPxztmIZR82qu/5t2z58sJ6Jm2xdp2ckySgXulq6S4k+hnnGuz2p1klviYCWGJMZfyAB+V+MTjGGD/cj0SkL5v/sa/Fie1zcv1SLs466x3H0kMllz6gAk0/FMi7eULspwnIp65g45qUAL3Oj

答案1

您已在文件中HashKnownHosts设置为“ yesssh_config,因此主机名不以纯文本形式提供。

如果您提前知道要查找的主机名,可以使用以下命令进行搜索:

ssh-keygen -H -F hostname
# Or, if SSH runs on port other than 22. Use literal brackets [].
ssh-keygen -H -F '[hostname]:2222'

这是相关部分ssh-keygen(1)手册页:

-F 主机名

在文件中搜索指定的主机名known_hosts,列出找到的所有匹配项。此选项对于查找散列主机名或地址很有用,也可以与-H以散列格式打印找到的密钥的选项结合使用 。

答案2

对于未来的搜索者,本文(非免责声明:我没有隶属关系)有一个相对简单的 Perl 脚本,用于暴力破解known_hosts.

http://blog.rootshell.be/2010/11/03/bruteforcing-ssh-known_hosts-files/

它允许从特定的 IP 地址开始。它也可以很容易地修改为使用字典。

此外,2014 年 6 月,开膛手约翰项目添加了对known_hosts破解的支持,它可以利用多个 CPU 核心、GPU、字典修改等。

总的来说,这是一种类似于密码破解的练习,具有更可预测(或至少受限)的目标空间。

对于私有 IP,您可以使用此 nmap 片段生成所有 RFC1918 IP 地址的字典以用作字典:

nmap -sL -Pn -n 192.168.0.0/16 172.16.0.0/12 10.0.0.0/8 |\
    grep '^Nmap scan report for' | cut -d\  -f5 >ips.list

如果包含公共 IP,则使用规则可能会更有效。这个 hashcat 规则集可能需要额外的工作来适应与 JtR 的合作,但它完成了大部分繁重的工作,应该为您提供一个起点。

主机名对于用户和环境来说更加特殊,但主机命名也有趋势。完全限定的主机名可以在 DNS、/etc/hosts、shell 历史记录等中与任何发现的 IP 地址相关联。由于目标系统可能与主机系统完全无关,因此可以从各种互联网范围扫描工作(例如 Censys)的 DNS 数据中获取公共域和主机名的公共转储。

对于除了最简单的情况之外的所有情况,在公认的答案中,使用 John the Ripper 可能比本机 SSH 解决方案更高效且可扩展性更好。

答案3

ssh-keygen -l -f ~/.ssh/known_hosts帮助吗?它显示该文件中每个主机的指纹。 (使用-v你还可以获得漂亮的小藏宝图,例如

+--[ RSA 2048]----+
|        .        |
|       + .       |
|      . B .      |
|     o * +       |
|    X * S        |
|   + O o . .     |
|    .   E . o    |
|       . . o     |
|        . .      |
+-----------------+

答案4

每个“known_hosts”行的开头都有主机字符串/ip(在“ssh-dss”或“ssh-rsa”字符串之前):

hostgn6 ssh-dss AAAB3NzaC1kc3MAAACBAIfGV4+/28Zr+dT/i+ifydUBS0dMRUjCtExIThOj3Yexynu+wSRGjMm4GfF+og2kAljZyUjhBFeM+WYbJzcDSDB [...] ==
yumyumn6.dik6.dir2g.some.net ssh-dss AAAAB3NzaC1kc3MAAACBAIfGV4+/28Zr+dT/i+ifydUBS0dMRUjCtExITh [...] ==

相关内容