web-dev-qa-db-fra.com

Est-il possible de trouver les hôtes dans le fichier known_hosts?

Je voudrais voir quels hôtes sont dans mon fichier known_hosts mais il ne semble pas être lisible par l'homme. Est-il possible de le lire?

Plus précisément, il existe un hôte auquel je peux me connecter via plusieurs noms et je veux savoir quelle est l'empreinte digitale que j'attends de mon fichier d'hôtes connu.

Mise à jour: j'utilise OpenSSH_5.3p1 Debian-3ubuntu7, OpenSSL 0.9.8k 25 mars 2009

Une ligne de mon fichier known_hosts ressemble à ceci,

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

Vous avez HashKnownHosts défini sur "yes" dans votre fichier ssh_config, Donc les noms d'hôtes ne sont pas disponibles en texte clair.

Si vous connaissez à l'avance le nom d'hôte que vous recherchez, vous pouvez le rechercher avec:

    ssh-keygen -H -F hostname

Voici la section pertinente de la page de manuel ssh-keygen(1) :

 -F hostname
         Search for the specified hostname in a known_hosts file, listing
         any occurrences found.  This option is useful to find hashed Host
         names or addresses and may also be used in conjunction with the
         -H option to print found keys in a hashed format.
144
pdo

Pour les futurs chercheurs, cet article (non-exclusion de responsabilité: je ne suis pas affilié) a un script Perl relativement simple pour hacher brutalement les adresses IP et les noms d'hôte dans known_hosts.

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

Il permet de partir d'une adresse IP particulière. Il pourrait également être facilement modifié pour utiliser un dictionnaire.

De plus, en juin 2014, le projet John the Ripper ajout de la prise en charge du craquage de connus_hôtes , qui peut tirer parti de plusieurs cœurs de processeur, GPU, déformation de dictionnaire, etc.

Vous pouvez également utiliser cet extrait nmap pour générer un dictionnaire de toutes les adresses IP RFC1918 à utiliser comme dictionnaire:

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
17
Royce Williams

Est-ce que ssh-keygen -l -f ~/.ssh/known_hosts Aidez-moi? (En utilisant -vvous obtenez également de jolies petites cartes au trésor, par exemple.

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

Utilisez le -l option pour ssh-keygen pour répertorier les empreintes digitales et -F option pour rechercher un nom d'hôte dans votre known_hosts fichier.

$ ssh-keygen -l -F sdf.org
# Host sdf.org found: line 835 type RSA
2048 6e:cd:53:4f:75:a1:e8:5b:63:74:32:4f:0c:85:05:17 |1|9J47PEllvWk/HJ6LPz5pOB2/7rc=|ld0BtQh5V3NdhBHBwR/ZqSv8bqY= (RSA)

Vous pouvez utiliser ssh-keyscan pour comparer l'empreinte de votre known_hosts à celui du serveur.

$ ssh-keyscan sdf.org | awk '{print $3}' | base64 -d | openssl md5 -c
# sdf.org SSH-2.0-OpenSSH_7.1
# sdf.org SSH-2.0-OpenSSH_7.1
no hostkey alg
(stdin)= 6e:cd:53:4f:75:a1:e8:5b:63:74:32:4f:0c:85:05:17
3
xn.

Il y a une chaîne hôte/ip au début de chaque ligne "connu_hôtes" (avant la chaîne "ssh-dss" ou "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 [...] ==
2
Ouki