Comment obtenir l’empreinte d’une clé SSH
- Collez une ou plusieurs lignes de clé publique dans Clés SSH, ou déposez un fichier
.pub,authorized_keysouknown_hosts. - Chaque clé a sa fiche : type, taille ou courbe, commentaire, empreintes SHA256 et MD5 et la ligne
ssh-keygen -lexacte. - Choisissez le contenu du panneau Sortie : empreintes SHA256, empreintes MD5, clé publique PEM (SPKI ou PKCS#1), RFC 4716 ou lignes OpenSSH normalisées.
- Utilisez Copier la sortie ou Télécharger. Copier l’empreinte sur une fiche copie uniquement cette valeur.
L’entrée acceptée ne se limite pas aux lignes .pub simples : options authorized_keys comme from="10.0.0.0/8",command="…", lignes known_hosts avec noms d’hôte ou entrées hachées |1|…, blocs RFC 4716 ---- BEGIN SSH2 PUBLIC KEY ----, certificats OpenSSH, clés publiques PEM et fichiers -----BEGIN OPENSSH PRIVATE KEY-----.
Comment l’empreinte est calculée
Une ligne de clé publique OpenSSH a trois parties : le type, le blob de clé en Base64 et un commentaire.
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG4ZlfvPsoxxd6tpkc1MDAJvZf8exJSDeW7a3xQRKA7d alice@laptop
L’empreinte est un hachage du blob décodé, soit 51 octets pour Ed25519 :
| Format | Valeur pour la clé ci-dessus |
|---|---|
| SHA256 (par défaut depuis OpenSSH 6.8) | SHA256:XSOBs9uz/dFf9ci88yKGbLMcjtzblRna8F0VOmxZiv8 |
| MD5 (ancien format) | MD5:93:07:89:27:05:e1:7a:5d:92:6e:ab:13:1e:48:90:d5 |
Les empreintes SHA256 s’écrivent en Base64 sans le = final : c’est pourquoi elles font toujours 43 caractères après le préfixe. Le même calcul en Python :
import base64, hashlib, sys
line = open(sys.argv[1]).read().split()
blob = base64.b64decode(line[1])
digest = hashlib.sha256(blob).digest()
print("SHA256:" + base64.b64encode(digest).decode().rstrip("="))
Voir le remplissage expliqué pour savoir pourquoi le = peut être omis, et Base64 en Python pour aller plus loin.
Vérifier une clé d’hôte avant de lui faire confiance
À la première connexion, OpenSSH demande : ED25519 key fingerprint is SHA256:…. Are you sure you want to continue connecting? La bonne réponse dépend de la comparaison de cette valeur avec une autre obtenue par un autre moyen :
- sur la console du serveur :
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub - dans les empreintes de clés d’hôte publiées par votre hébergeur
- auprès d’un collègue qui a déjà l’hôte dans
known_hosts: collez ce fichier ici, chaque entrée est listée avec son empreinte
Pour voir ce que propose un serveur sans vous connecter, ssh-keyscan host.example.com | ssh-keygen -lf - affiche toutes les empreintes de ses clés d’hôte.
Reconnaître le type de clé à son Base64
Le blob commence par le type de clé sous forme de chaîne préfixée par sa longueur : chaque type a donc un début Base64 fixe.
| Commence par | Type de clé |
|---|---|
AAAAC3NzaC1lZDI1NTE5 | ssh-ed25519 |
AAAAB3NzaC1yc2E | ssh-rsa |
AAAAE2VjZHNhLXNoYTItbmlzdHAyNT | ecdsa-sha2-nistp256 |
AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29t | sk-ssh-ed25519@openssh.com (clé de sécurité FIDO) |
AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAx | certificat Ed25519 |
Si le type indiqué sur la ligne et le blob ne concordent pas, la fiche signale l’incohérence. Cela signifie généralement qu’une ligne a été modifiée à la main.
Avertissements et limites
- RSA de moins de 2048 bits est signalé comme faible, et les clés DSA sont signalées parce que les versions récentes d’OpenSSH les désactivent.
- Les certificats (
*-cert-v01@openssh.com) affichent l’ID de clé, le numéro de série, le type utilisateur ou hôte, les principaux, la validité, les options critiques, les extensions et l’empreinte de la clé de l’AC signataire. - Les clés FIDO (
sk-…) et Ed448 se décodent, mais n’ont pas de conversion PEM. - Le commentaire stocké dans un fichier de clé privée n’est pas affiché.
- SHA256 utilise l’API WebCrypto du navigateur, qui exige une page en https. MD5 est calculé par la page elle-même.
FAQ
Comment trouver l'empreinte de ma clé SSH ?
Collez le contenu de votre fichier .pub ci-dessus, ou lancez ssh-keygen -lf ~/.ssh/id_ed25519.pub. Les deux affichent une ligne comme 256 SHA256:XSOBs9uz… alice@laptop (ED25519).
Pourquoi mon empreinte est-elle différente sur un autre serveur ou service ?
C’est généralement le hachage : les anciens outils et certaines consoles web affichent du MD5 en hex séparé par des deux-points (MD5:93:07:89:…), alors qu’OpenSSH moderne affiche du SHA256 en Base64. Réglez Sortie sur les empreintes MD5 pour comparer avec l’ancienne forme.
Puis-je coller mon fichier de clé privée ici sans risque ?
L’outil ne lit que la section publique d’un fichier OPENSSH PRIVATE KEY, stockée en clair même dans les clés protégées par mot de passe, et ne touche pas à la partie privée. Coller le fichier .pub reste la meilleure habitude.
Que hache exactement l'empreinte SHA256 ?
Le blob binaire de la clé, c’est-à-dire la partie Base64 de la ligne .pub une fois décodée. Le commentaire et le texte du type de clé placé devant ne sont pas inclus : renommer une clé ne change donc pas son empreinte.