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.

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
Hola.
Muchas gracias por tu aporte personal y por tu sugerencia.
Saludos!
¡Muy buenas!
Este error también lo vi yo con algún server cuando actualicé a OpenSSH 8.8 (pero hace ya unos cuantos meses). El motivo del error y la solución se mencionan en las release notes:
https://www.openssh.com/txt/release-8.8
En concreto en la sección «Potentially-incompatible changes».
¡Un saludo!
Hola!
cómo me gusta encontrarte por aquí!!
Gracias por el enlace, le echaré un vistazo.
Un saludo hasta los países nórdicos por los que habitas! 🙂
Acabo de ver que también hubo alguna discusión al respecto en el foro de Arch Linux.
https://bbs.archlinux.org/viewtopic.php?id=270005
En cualquier caso, creo que está todo mucho mejor explicado en las release notes.
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.
Hola!
Me alegro!!
Gracias por comunicarlo.
Saludos.
En mi caso, agregandole la linea, HostkeyAlgorithms +ssh-rsa, al archivo, ya me funcionó
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.