Solución al error: Unable to negotiate with port 22: no matching host key type found. Their offer: ssh-rsa

Hoy al actualizar un repositorio de git con git pull me saltó el error: Unable to negotiate with <IP> port 22: no matching host key type found. Their offer: ssh-rsa.

Desde hace años, mantengo la traducción al español de la web emailselfdefense, donde enseñan la manera de cifrar el correo electrónico para mantener la privacidad.

Resulta que se habían realizado algunas actualizaciones en el texto de la versión inglesa y quise dejarlos reflejarlos en la versión española.

Como el desarrollo de la página y de las versiones se realiza bajo git, me dispuse a descargar los cambios recientes subidos en la rama principal mediante git pull.

Al ejecutar el comando, me saltó un error:

Unable to negotiate with 209.51.188.160 port 22: no matching host key
type found. Their offer: ssh-rsa

Me decía que quizás no tenía permisos o que no existía el repositorio remoto. Bueno, pensé, ya he tocado algo que no debía y lo he roto todo. Así que pregunté en la lista de correo y con un enlace de aquí y otro de allá conseguí solucionarlo. ¿Quieres ver cómo?

En la lista de correo de coordinación que tenemos me pasaron un enlace a un hilo en GitHub. Se planteaba una solución a un tema similar. Pero a mí no me terminó de funcionar.

Finalmente con un enlace de aquí y de allá y después de muchas pruebas, conseguí hacerlo volver a funcionar.

Para ello edité el archivo ~/.ssh/config y añadí estas líneas al archivo:

host vcs.fsf.org
    HostkeyAlgorithms +ssh-rsa
    PubkeyAcceptedAlgorithms +ssh-rsa

En mi caso en host he puesto ese dominio porque es a donde apunta la IP del error que me daba. En tu caso deberás cambiarlo por el dominio que te de el error.

Las siguientes líneas, indican que se habilite un tipo de cifrado con el que todavía todo funcionaba antes de que se hiciera una actualización en openssh a la versión 8.8.

En mi caso funcionó, desconozco si es una atrocidad o un agujero de seguridad añadir esas líneas en mi archivo, para conseguir acceder a ese repositorio git remoto.

Quizás en una actualización futura todo esto se solucione. Hasta entonces aquí dejo esto por si me sirve para mi yo del futuro o si a tí también te ha sucedido.

Imagen: Markus Freak

9 comentarios sobre “Solución al error: Unable to negotiate with port 22: no matching host key type found. Their offer: ssh-rsa

  1. Gracias por compartir, Víctor.
    Algo parecido me pasó en mayo de 2021.
    Al actualizar el cliente ssh de openssh los protocolos admitidos eran -digamos- más exigentes y ya no tenía acceso a un (desfasado) servidor con Debian 4. Actualicé el servidor a Debian 5 (lo que pude!) y el servidor ssh ya incorporó los nuevos protocolos de cifrado compatibles con la configuración por defecto de los clientes.

    El cambio de negociación que haces en el cliente te funciona. Bien. Lo suyo es avisar a los que mantienen el servidor donde conectas para actualizarlo para que incorpore los protocolos más seguros.

    Un saludo,
    Josep

  2. Muchas graciasss.

    Tuve este problema con mi router LibreCMC al intentar entrar mediante consola.

    En mi caso tuve que crear el archivo config, ya que no existía, dentro de .ssh y añadir lo que has comentado:

    host 192.168.10.1
    HostkeyAlgorithms +ssh-rsa
    PubkeyAcceptedAlgorithms +ssh-rsa

    Un fuerte abrazo por tu ayuda.

  3. Hola, Perdon, he buscado mucho y las soluciones son algo complejas, simplemente, hay que editar el archivo /etc/ssh/ssh_config y agregar esta linea al final.

    HostKeyAlgorithms +ssh-rsa,ssh-dss

    Santo Remedio.

Me gustaría saber tu opinión. Deja un comentario (Puedes usar MarkDown)

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.