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 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. ¿Es este resultado / respuesta intencional?
  2. ¿Existe una corrección simple que permita el acceso SSH al NAS?

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 root@192.168.8.109

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.


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.


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


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 curve25519-sha256@libssh.org
Dagelf

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.