Zum Inhalt springen
ecdsa.com
OpenSSH client (8.8+) connecting to a server that only offers legacy host key algorithmsSSH

Fehlermeldung

Unable to negotiate with 127.0.0.1 port 22: no matching host key type found. Their offer: ssh-rsa

Auch ausgegeben als

  • 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

Host und Port sowie das Angebot des Servers variieren. Beim Schlüsselaustausch lautet der Text „no matching key exchange method found“, bei Verschlüsselungsverfahren „no matching cipher found“.

Was der Fehler bedeutet

Client und Server haben keinen gemeinsamen Algorithmus für Host-Schlüssel, deshalb bricht die Verbindung während der Aushandlung der Algorithmen ab – noch vor der Prüfung des Hosts und vor der Anmeldung. „Their offer“ listet auf, was der Server vorgeschlagen hat. `ssh-rsa` (RSA mit SHA-1) und `ssh-dss` (DSA) sind ab OpenSSH 8.8 standardmäßig deaktiviert; Server, die nichts anderes anbieten, sind typischerweise alte Appliances, Router, NAS-Geräte oder nicht gepatchte Systeme. Die Variante beim Schlüsselaustausch („no matching key exchange method found“) hat dieselbe Form und dieselben Abhilfen.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Veralteten Algorithmus nur für diesen Host zulassen

    Ein `Host`-Block beschränkt SHA-1 auf das Gerät, das es braucht. Setze `+ssh-rsa` nie unter `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.

    Dem Server moderne Host-Schlüssel geben

    Aktualisierst du die Firmware oder das OpenSSH des Geräts und erzeugst Ed25519- oder ECDSA-Host-Schlüssel, sind keine Ausnahmen mehr nötig.

    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

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen