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
Ein alter eingebetteter SSH-Server
häufigSwitches, Firewalls, Drucker und Speichergeräte laufen oft mit dropbear oder alten OpenSSH-Versionen, die ausschließlich Host-Schlüssel mit RSA/SHA-1 haben.
Ein Server ohne moderne Host-Schlüssel
gelegentlichVor langer Zeit installierte Systeme haben möglicherweise nur einen RSA-Host-Schlüssel und ein sshd, das zu alt ist, um mit `rsa-sha2-256/512` zu signieren.
Eine eingeschränkte Client-Konfiguration
gelegentlichEine Zeile `HostKeyAlgorithms` in `~/.ssh/config` oder `/etc/ssh/ssh_config.d`, die nur Ed25519 aufführt, weist Server ab, die nur ECDSA- oder RSA-Schlüssel haben.
So behebst du den Fehler
- 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.
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