Lors de la connexion à un nouveau serveur / inconnu (avec OpenSSH récent), par exemple:
ssh example.com
Vous obtenez l'empreinte digitale comme ci-dessous:
The authenticity of host 'example.org (192.0.2.42)' can't be established.
RSA key fingerprint is SHA256:7KMZvJiITZ+HbOyqjNPV5AeC5As2GSZES5baxy1NIe4.
Are you sure you want to continue connecting (yes/no)?
Cependant, les empreintes digitales sont généralement données pour le serveur sous cette forme:
f6:fc:1c:03:17:5f:67:4f:1f:0b:50:5a:9f:f9:30:e5
Comment puis-je vérifier l'authenticité (sans déranger les administrateurs du serveur pour qu'ils fournissent une empreinte SHA256)?
Réponses:
Auparavant, l'empreinte digitale était donnée sous la forme d'un hachage md5 hexadécimal. Depuis OpenSSH 6.8, l’empreinte est maintenant affichée en base64 SHA256 (par défaut). Vous ne pouvez pas les comparer directement.
Ils ont également ajouté une nouvelle option de configuration
FingerprintHash
. Tu peux mettredans votre
~/.ssh/config
pour revenir à l'ancienne valeur par défaut ( moins sécurisée ) ou utilisez simplement cette option pour un usage unique:ce qui donnerait l'empreinte digitale comme
Espérons que les administrateurs de serveur fournissent les deux types d'empreintes dans un proche avenir.
MODIFIER:
Comme indiqué dans les forums Arch Linux , il existe également une troisième option:
MODIFIER:
Vous pouvez générer le hachage d'une clé arbitraire comme indiqué sur le livre de cuisine OpenSSH :
Récupérer la clé:
ssh-keyscan example.org > key.pub
/etc/ssh
Générez le hachage:
key.pub
ou exécutez-le.ssh-keyscan -t rsa example.org > key.pub
ssh-keygen -l -f key.pub
(hachage par défaut, en fonction de la version d'OpenSSH)ssh-keygen -l -f key.pub -E md5
(md5 sur OpenSSH actuel)awk '{print $2}' ssh_host_rsa_key.pub | base64 -d | sha256sum -b | awk '{print $1}' | xxd -r -p | base64
(sha256 sur le vieil OpenSSH)awk '{print $3}'
nouvelles versions de ssh-keyscan car le format a changé)la source
ssh-keygen -lf
sur le serveur ne me donne que les empreintes md5, et pour toute la vie, je ne trouve pas comment obtenir le sha256, ni dans les pages de manuel, ni sur le www ...awk
1-liner (ne correspond pas au hachage indiqué par mon client)sha256sum -b | awk '{print $1}' | xxd -r -p
peut être remplacé enopenssl sha256 -binary
ne nécessitant pas l’installation de vim. La ligne de commande résultante serait:awk '{print $2}' ~/.ssh/id_rsa.pub | base64 -d | openssl sha256 -binary | base64
Je viens de créer un petit script bash qui imprimera une table avec les empreintes digitales de tous les chiffrements clés autorisés sur le serveur (selon
/etc/ssh/sshd_config
) dans algoSSH-256
etMD5
al. Voici un exemple de sortie:Le script sera également exécuté sur les serveurs de
SSH
version ci-dessous6.8
(avant que l'-E md5
option ait été ajoutée).Éditer: versions mises à jour pour des versions encore plus récentes de SSH qui permutaient maintenant les chiffrements par défaut avec le support des images ASCII.
Ceci est juste joli imprimer en utilisant les informations de
JonnyJD
la réponse de. Merci.la source
il s'avère que ssh-keygen (quelque temps après la version 6.6; vraisemblablement, la 6.8) a une
-E md5
option qui lui permettra d’imprimer l’empreinte digitale sous la forme d’une empreinte digitale md5. Ainsi, si vous pouvez récupérer indépendamment le fichier de clé publique du serveur, vous pouvez l’alimenterssh-keygen -E md5 -l -f ssh_host_rsa_key.pub
et obtenir votre empreinte digitale.la source
Le one-liner suivant fonctionne (au moins) sur
Ubuntu 16.04,18.04 / Centos >= 7
(Testé avec des serveurs:
openssh 3.9
-openssh 7.4
)Sortie:
la source
essayé de modifier pour obtenir également l'art aléatoire dans la table:
... mais je ne suis pas un programmeur et le script ne fonctionne pas comme prévu. J'apprécierais si quelqu'un peut aider à réparer (également le nettoyage). Il serait bien d’avoir côte à côte des images d’art aléatoires sha256 et md5 pour utiliser l’espace plus efficacement. J'ai également modifié les commandes md5 et sha256 car les commandes d'origine ne fonctionnaient pas pour moi (système probablement trop nouveau) - seul sha256 a été placé dans une table avec le signe "=" à la fin, ce qui ne faisait pas partie de l'empreinte réelle et ne pouvait pas l'enlever.
(désolé je ne pouvais pas commenter car je me suis inscrit récemment)
la source