Aller au contenu
ecdsa.com
OpenSSH client (8.8+) connecting to a server that only offers legacy host key algorithmsSSH

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

Comment corriger l’erreur

  1. 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. 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

Erreurs associées

Parcourir toute la base de données des erreurs de signature