SSH devuelve: no se encontró ningún tipo de clave de host coincidente. Su oferta: ssh-dss

81

Estoy acostumbrado a usar Putty en una caja de Windows o un terminal de línea de comando OSX para SSH en un NAS, sin ninguna configuración del cliente.

Ubuntu 16.04 intenta SSH en el NAS (a través de 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. ¿Es este resultado / respuesta intencional?
  2. ¿Existe una corrección simple que permita el acceso SSH al NAS?
gatorback
fuente
No tenía ningún .pemarchivo SSH de clave privada ( ) en su máquina Windows, ¿verdad?
Android Dev
No hay archivos .pem en Windows box
gatorback
1
Su NAS no sería una serie Western Digital EX, ¿verdad? :)
Adam Plocher
Es un dispositivo MyCloud: espero que de alguna manera se aclare
gatorback

Respuestas:

139

La versión de OpenSSH incluida en 16.04 deshabilita ssh-dss. Hay una página ordenada con información heredada que incluye este problema: http://www.openssh.com/legacy.html

En pocas palabras, debe agregar la opción -oHostKeyAlgorithms=+ssh-dssal comando SSH:

ssh -oHostKeyAlgorithms=+ssh-dss [email protected]

También puede agregar un patrón de host en su ~/.ssh/configpara que no tenga que especificar el algoritmo clave cada vez:

Host nas
  HostName 192.168.8.109
  HostKeyAlgorithms=+ssh-dss

Esto tiene el beneficio adicional de que no necesita escribir la dirección IP. En cambio, sshreconocerá el host nasy sabrá dónde conectarse. Por supuesto, puede usar cualquier otro nombre en su lugar.

Kalle Elmér
fuente
Creo que estas son soluciones en el lado de Ubuntu. ¿Existe una opción simple en el lado NAS? Sería bueno comprender todas las opciones y aprovechar la oportunidad para fortalecer cualquier debilidad de seguridad. Tal vez esta es otra pregunta para otro hilo? Muy buena explicación \ respuesta
gatorback
¿Es posible configurar esto globalmente? ¿Como un comodín IP? 0.0.0.0 no funciona
podarok
2
@podarok, pruebaHost *
brownian
10

Editar el archivo ~ / .ssh / config es la mejor opción. Si tiene varios hosts para conectarse en la misma subred, puede usar el siguiente método para evitar ingresar cada host en el archivo:

 Host 192.168.8.*
  HostKeyAlgorithms=+ssh-dss

Esto funciona muy bien para mí, ya que tengo varios switches Brocade para administrar y comenzaron a quejarse de la clave Host después de que me mudé a Ubuntu 16.04.

truxpin
fuente
6

Si desea utilizar OpenSSH más nuevos para conectarse a servidores obsoletos:

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

Agregue -v si desea ver lo que sucede, y -o HostKeyAlgorithms = ssh-dss si aún no funciona:

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

También puede, por supuesto, editar / etc / ssh / ssh_config o ~ / .ssh / ssh_config, y agregar:

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 menciona la siguiente solución en las placas de enrutamiento Mikrotik:

/ip ssh set strong-crypto=yes

(Observando esto aquí porque esta respuesta también aparece en las búsquedas web cuando se busca un mensaje de error similar).

Dagelf
fuente
debería ser -o KexAlgorithms = diffie-hellman-group1-sha1 (no 14)
dalf
Eso depende ... $ ssh -Q servidor 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 [email protected]
Dagelf