SSH gibt Folgendes zurück: Es wurde kein passender Hostschlüsseltyp gefunden. Ihr Angebot: ssh-dss


81

Ich bin es gewohnt, Putty auf einer Windows-Box oder einem OSX-Befehlszeilenterminal für SSH in einem NAS zu verwenden, ohne dass der Client konfiguriert werden muss.

Ubuntu 16.04 versucht SSH in den NAS (über LAN):

ssh root@192.168.8.109

Unable to negotiate with 192.168.8.109 port 22: no matching host key type found. Their offer: ssh-dss
  1. Ist dieses Ergebnis / diese Antwort beabsichtigt?
  2. Gibt es eine einfache Korrektur, die den SSH-Zugriff auf das NAS ermöglicht?

Sie hatten keine .pemDateien mit dem privaten SSH-Schlüssel ( ) auf Ihrem Windows-Computer, oder?
Android Dev

Keine .pem-Dateien auf Windows-Box
Gatorback

1
Ihr NAS wäre nicht zufällig eine Western Digital EX-Serie, oder? :)
Adam Plocher

Es ist ein MyCloud-Gerät: hoffe, das klärt irgendwie
gatorback

Antworten:


139

Die in 16.04 enthaltene Version von OpenSSH deaktiviert ssh-dss. Es gibt eine ordentliche Seite mit älteren Informationen, die dieses Problem enthält: http://www.openssh.com/legacy.html

Kurz gesagt, Sie sollten die Option -oHostKeyAlgorithms=+ssh-dsszum SSH-Befehl hinzufügen :

ssh -oHostKeyAlgorithms=+ssh-dss root@192.168.8.109

Sie können auch ein Host-Muster hinzufügen, ~/.ssh/configdamit Sie den Schlüsselalgorithmus nicht jedes Mal angeben müssen:

Host nas
  HostName 192.168.8.109
  HostKeyAlgorithms=+ssh-dss

Dies hat den zusätzlichen Vorteil, dass Sie die IP-Adresse nicht eingeben müssen. Stattdessen ssherkennt der Host nasund weiß, wo eine Verbindung hergestellt werden soll. Natürlich können Sie auch einen anderen Namen verwenden.


Ich glaube, dass dies Lösungen auf der Ubuntu-Seite sind. Gibt es eine einfache Option auf der NAS-Seite? Es wäre schön, alle Optionen zu verstehen und die Gelegenheit zu nutzen, um Sicherheitslücken zu schließen. Vielleicht ist das eine andere Frage für einen anderen Thread? Sehr schöne Erklärung \ Antwort
Gatorback

Ist es möglich, dies global festzulegen? Wie Wildcard-IP? 0.0.0.0 funktioniert nicht
Podarok

2
@podarok, versuchenHost *
Brownsche

10

Das Bearbeiten der Datei ~ / .ssh / config ist die beste Option. Wenn Sie mehrere Hosts im selben Subnetz verbinden möchten, können Sie mit der folgenden Methode vermeiden, dass jeder Host in die Datei eingetragen wird:

 Host 192.168.8.*
  HostKeyAlgorithms=+ssh-dss

Dies funktioniert sehr gut, da ich eine Reihe von Brocade-Switches verwalten muss, die sich nach dem Wechsel zu Ubuntu 16.04 über den Host-Schlüssel beschwerten.


6

Wenn Sie neueres OpenSSH verwenden möchten, um eine Verbindung zu veralteten Servern herzustellen:

ssh -o KexAlgorithms=diffie-hellman-group14-sha1 -oHostKeyAlgorithms=+ssh-dss my.host.com

Fügen Sie -v hinzu, wenn Sie sehen möchten, was passiert, und -o HostKeyAlgorithms = ssh-dss, wenn es immer noch nicht funktioniert:

ssh -v -o HostKeyAlgorithms=ssh-dss -o KexAlgorithms=diffie-hellman-group14-sha1 my.host.com

Sie können natürlich auch / etc / ssh / ssh_config oder ~ / .ssh / ssh_config bearbeiten und Folgendes hinzufügen:

Host my.host.com *.myinsecure.net 192.168.1.* 192.168.2.*
    HostKeyAlgorithms ssh-dss
    KexAlgorithms diffie-hellman-group1-sha1    

https://forum.ctwug.za.net/t/fyi-openssh-to-access-rbs-openssh-7/6069 erwähnt das folgende Update auf Mikrotik Routerboards:

/ip ssh set strong-crypto=yes

(Dies wird hier vermerkt, da diese Antwort auch bei der Websuche auftaucht, wenn nach einer ähnlichen Fehlermeldung gesucht wird.)


es sollte -o KexAlgorithms = diffie-hellman-group1-sha1 (nicht 14) sein
dalf

Das hängt davon ab, ... $ ssh -Q kex Server sha2-nistp384 ecdh-sha2-nistp521 curve25519-sha256@libssh.org
Dagelf

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.