Obtenir automatiquement les clés publiques d'un serveur SSH, peu importe leur algo, sans avoir les fichiers ssh_host_*_key
sous la main, juste en se connectant :
file=$(mktemp)
ssh-keyscan host >$file 2>/dev/null
ssh-keygen -l -f $file
rm $file
Notes :
ssh-keyscan -t ecdsa,rsa,ed25519,dsa
OpenSSH >= 7.2 ssh-keygen is able to read from stdin: ssh-keyscan host | ssh-keygen -lf -
Rappel : si vous comptez utiliser les empreintes ainsi récupérées pour valider une connexion SSH, il faut que la commande ssh-keyscan soit exécutée sur le même réseau local que celui où se trouve la cible, sinon le risque de MITM est toujours présent. Dans mon cas d'usage, c'est un hyperviseur qui va taper sur une de ses VMs. Il y a donc qu'une tap qui les sépare donc pas de risques (on exclu un root malveillant).