Message d’erreur
Unable to negotiate with 127.0.0.1 port 22: no matching host key type found. Their offer: ssh-rsa
Également affiché sous la forme
- no matching host key type found. Their offer: ssh-rsa,ssh-dss
- Unable to negotiate with 127.0.0.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1
L’hôte et le port, ainsi que l’offre du serveur, varient. Pour l’échange de clés, le texte est « no matching key exchange method found » ; pour les algorithmes de chiffrement, « no matching cipher found ».
Ce que cela signifie
Le client et le serveur n’ont aucun algorithme de clé d’hôte en commun : la connexion s’arrête donc pendant la négociation des algorithmes, avant la vérification de l’hôte ou l’ouverture de session. « Their offer » liste ce que le serveur a proposé. `ssh-rsa` (RSA avec SHA-1) et `ssh-dss` (DSA) sont désactivés par défaut dans OpenSSH 8.8 et les versions ultérieures ; les serveurs qui ne proposent rien d’autre sont généralement de vieux équipements, des routeurs, des NAS ou des systèmes non mis à jour. La variante liée à l’échange de clés (« no matching key exchange method found ») a la même forme et les mêmes remèdes.
Pourquoi cela se produit
Un vieux serveur SSH embarqué
fréquenteLes commutateurs, pare-feu, imprimantes et périphériques de stockage exécutent souvent dropbear ou d’anciennes versions d’OpenSSH avec uniquement des clés d’hôte RSA/SHA-1.
Un serveur sans clés d’hôte modernes
occasionnelleLes systèmes installés il y a longtemps peuvent n’avoir qu’une clé d’hôte RSA et un sshd trop ancien pour signer avec `rsa-sha2-256/512`.
Une configuration client restrictive
occasionnelleUne ligne `HostKeyAlgorithms` dans `~/.ssh/config` ou `/etc/ssh/ssh_config.d` qui ne liste qu’Ed25519 rejette les serveurs qui n’ont que des clés ECDSA ou RSA.
Comment corriger l’erreur
- 1.
Autoriser l’ancien algorithme pour cet hôte uniquement
Un bloc `Host` limite SHA-1 à l’équipement qui en a besoin. Ne mettez jamais `+ssh-rsa` sous `Host *`.
text # ~/.ssh/config - re-enable the legacy algorithm for that one device only Host old-switch.lan HostKeyAlgorithms +ssh-rsa PubkeyAcceptedAlgorithms +ssh-rsa - 2.
Doter le serveur de clés d’hôte modernes
Mettre à jour le micrologiciel de l’équipement ou OpenSSH, puis générer des clés d’hôte Ed25519/ECDSA, rend les exceptions inutiles.
bash # On the server: generate modern host keys and let sshd offer them ssh-keygen -A # creates missing ed25519/ecdsa host keys sshd -T | grep -E "^hostkeyalgorithms|^hostkey " # what the server will offer