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 [email protected]

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?
Gatorback
quelle
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 [email protected]

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.

Kalle Elmér
quelle
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.

truxpin
quelle
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.)

Dagelf
quelle
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 [email protected]
Dagelf