我想查看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
设置为“ yes
” ssh_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 [...] ==