Restituisce SSH: nessun tipo di chiave host corrispondente trovato. La loro offerta: ssh-dss


81

Sono abituato a usare Putty su una scatola di Windows o un terminale a riga di comando OSX per SSH in un NAS, senza alcuna configurazione del client.

Ubuntu 16.04 tenta di accedere a SSH nel NAS (tramite 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. Questo risultato / risposta è intenzionale?
  2. Esiste una semplice correzione che consente l'accesso SSH al NAS?

Non avevi alcun .pemfile di chiave privata SSH ( ) sul tuo computer Windows, vero?
Dev Android

Nessun file .pem su Windows box
gatorback

1
Il tuo NAS non sarebbe una serie Western Digital EX? :)
Adam Plocher,

È un dispositivo MyCloud: spero che in qualche modo chiarisca
gatorback il

Risposte:


139

La versione di OpenSSH inclusa in 16.04 disabilita ssh-dss. C'è una pagina ordinata con informazioni legacy che include questo problema: http://www.openssh.com/legacy.html

In poche parole, è necessario aggiungere l'opzione -oHostKeyAlgorithms=+ssh-dssal comando SSH:

ssh -oHostKeyAlgorithms=+ssh-dss root@192.168.8.109

Puoi anche aggiungere un modello host nel tuo in ~/.ssh/configmodo da non dover specificare l'algoritmo chiave ogni volta:

Host nas
  HostName 192.168.8.109
  HostKeyAlgorithms=+ssh-dss

Questo ha l'ulteriore vantaggio di non dover digitare l'indirizzo IP. Invece, sshriconoscerà l'host nase saprà dove connettersi. Ovviamente puoi usare qualsiasi altro nome al suo posto.


Credo che queste siano soluzioni sul lato Ubuntu. C'è una semplice opzione sul lato NAS? Sarebbe bello capire tutte le opzioni e cogliere l'opportunità per rafforzare qualsiasi debolezza di sicurezza. Forse questa è un'altra domanda per un altro thread? Spiegazione \ response molto bella
gatorback

È possibile impostarlo a livello globale? Hai un jolly IP? 0.0.0.0 non funziona
podarok

2
@podarok, provaHost *
brownian

10

La modifica del file ~ / .ssh / config è l'opzione migliore. Se si dispone di un numero di host a cui connettersi sulla stessa sottorete, è possibile utilizzare il metodo seguente per evitare di immettere ciascun host nel file:

 Host 192.168.8.*
  HostKeyAlgorithms=+ssh-dss

Questo funziona alla grande per me dato che ho una serie di switch Brocade da gestire e hanno iniziato a lamentarsi della chiave Host dopo che mi sono trasferito su Ubuntu 16.04.


6

Se si desidera utilizzare OpenSSH più recente per connettersi a server obsoleti:

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

Aggiungi -v se vuoi vedere cosa sta succedendo e -o HostKeyAlgorithms = ssh-dss se continua a non funzionare:

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

Puoi anche, ovviamente, modificare / etc / ssh / ssh_config o ~ / .ssh / ssh_config e aggiungere:

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 menziona la seguente correzione su Routerboard Mikrotik:

/ip ssh set strong-crypto=yes

(Notando questo qui perché questa risposta compare anche nelle ricerche web quando si cerca un messaggio di errore simile.)


dovrebbe essere -o KexAlgorithms = diffie-hellman-group1-sha1 (non 14)
dalf

Dipende ... $ ssh -Q server kex diffie-hellman-group1-sha1 diffie-hellman-group14-sha1 diffie-hellman-group-exchange-sha1 diffie-hellman-group-exchange-sha256 ecdh-sha2-nistp256 ecdh- sha2-nistp384 ecdh-sha2-nistp521 curve25519-sha256@libssh.org
Dagelf

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.