No se puede SSH: debug1: esperando SSH2_MSG_KEX_DH_GEX_REPLY

24

Tenemos un servidor XXX en Amazon EC2.

SSH se ejecuta en un puerto estándar (22).

Coloqué mi clave pública en el archivo /.ssh/authorized_keys

Lo divertido es que AYER funcionó muy bien.

¡Pero hoy no sé qué pasó! Simplemente no puedo iniciar sesión.

ssh -vvvv nombre del servidor

está atrapado en

debug1: esperando SSH2_MSG_KEX_DH_GEX_REPLY

¡Revisé mi pubkey y está allí! (¿Cómo lo comprobé? Le pedí al otro chico que lo verificara)

y luego usé otra computadora (Windows 7 + masilla) y coloqué mi nueva clave pública. ¿Y qué? ¡Pude iniciar sesión! Y esa es otra computadora con Win7 en la misma LAN que significa que la IP externa es la misma.

Mi clave privada funciona para otros servidores pero no con esto.

¡Por favor ayuda!

bakytn
fuente
Generé NUEVAS claves y almacené una nueva clave pública ... ¡lo mismo! ¡decir ah!
bakytn
para su información, su problema no tiene nada que ver con la autenticación de clave pública: el intercambio de claves DH ( SSH2_MSG_KEX_DH_GEX_REPLY) ocurre mucho antes en la conexión.
Grawity
gracias por la información. Por cierto, el problema se ha resuelto por sí solo. No hice nada, solo intenté iniciar sesión y tuve éxito. ja
bakytn
Mala latencia de red? muchas gotas? Es un mensaje normal.
Korjavin Ivan
Probablemente lo sea. Ahora no puedo reproducirlo de ninguna manera. Así podría ser de mi lado.
bakytn

Respuestas:

28

Cambie la interfaz de red MTU para resolverlo. Este es un error para ubuntu 14.04.

Esto funcionó para mí:

sudo ip li set mtu 1200 dev wlan0

O

sudo ifconfig wlan0 mtu 1200

ssh no puede conectarse al host VPN: se bloquea en 'esperando SSH2_MSG_KEX_ECDH_REPLY'

shgnInc
fuente
sudo ip li set mtu 1400 dev eno1funcionó para mí en Ubuntu 16.04.
Márcio
Muchas gracias. No he podido SSH o escritorio remoto en una caja en particular durante semanas. HTTP funciona y las máquinas adyacentes funcionan bien. Tuve que saltar de otras máquinas para entrar.
duckbrain
12

El mismo problema exacto aquí para acceder a un servidor dedicado en el centro de datos en línea.net.

No hay ningún problema después de un reinicio, no es necesario cambiar MTU, la conexión ssh funciona durante 1-3 semanas, luego aparece exactamente el mismo error, bloqueando en KEXINIT, no es posible conectar el servidor ssh.

Podría ser algún tipo de error sshd, pero necesariamente se desencadena por algunas cosas de nework que suceden después de 1-3 semanas, reproduje este problema exacto muchas veces con muchos servidores diferentes en esta red, algunos dicen que podría estar relacionado con un error de Cisco, posiblemente relacionado con algunas opciones de DPI.

Ese problema nunca sucedió con otros servidores que administro en otros centros de datos, y que tienen exactamente la misma distribución, configuración y versión sshd.

si no desea reiniciar cada 10 días porque los firewalls del centro de datos (u otros ajustes de red) están haciendo cosas raras:

primero conéctese con una de esas soluciones alternativas del lado del cliente:

solución 1, reduciendo su MTU local del lado del cliente:

ip li set mtu 1400 dev wlan0

(1400 debería ser suficiente, pero puede intentar usar valores más bajos si es necesario)

solución 2, especificando el cifrado elegido para la conexión ssh:

ssh -c [email protected] host

(o intente con cualquier otra cifra disponible)

Ambas soluciones alternativas del lado del cliente lo hicieron para mí, podría conectarme y ahorrar mi tiempo de actividad; pero desea solucionar este lado del servidor para siempre, por lo que no tiene que pedir a cada cliente que modifique localmente su MTU.

En gentoo acabo de agregar:

mtu_eth0="1400"

en /etc/conf.d/net

(la misma opción de mtu debería estar disponible en algún lugar de su archivo de configuración de red de distribución preferido)

He configurado el mtu a 1400, pero 1460 es probablemente suficiente en la mayoría de los casos.

Otra solución alternativa podría ser utilizar las siguientes reglas de iptables para gestionar la fragmentación:

# / sbin / iptables -I OUTPUT -p tcp --tcp-flags SYN, RST SYN -j TCPMSS --clamp-mss-to-pmtu

# / sbin / ip6tables -I OUTPUT -p tcp --tcp-flags SYN, RST SYN -j TCPMSS --clamp-mss-to-pmtu

(pero personalmente no necesitaba este hasta ahora)

También tenga en cuenta que los síntomas de este problema también pueden ser:

debug1: SSH2_MSG_KEXINIT sent

No solo

debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY

editar marzo 2016:

  • bajar el mtu a 1400 en el servidor casi siempre funciona, pero recientemente tuve el caso de que mtu ya estaba bajado a 1400 en el servidor y el problema reapareció, y el cliente también tuvo que bajar mtu a 1400.

  • El problema también apareció en los formularios de inicio de sesión web que esperaban que la página se volviera a cargar hasta decir "el servidor ha restablecido la conexión", también solucionado después de que el cliente configurara el mtU en 1400.

    enlaces relacionados :

https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/1254085

http://www.held.org.il/blog/2011/05/the-myterious-case-of-broken-ssh-client-connection-reset-by-peer/

https://nowhere.dk/articles/natty-narwhal-problems-connecting-to-servers-behind-cisco-firewalls-using-ssh

/programming/2419412/ssh-connection-stop-at-debug1-ssh2-msg-kexinit-sent

http://www.1-script.com/forums/ssh/ssh-hang-after-ssh2-msg-kexinit-sent-10616-.htm

http://www.snailbook.com/faq/mtu-mismatch.auto.html

neofutur
fuente
Esto puede suceder especialmente cuando tiene una MTU pequeña muy inusual en el extremo del cliente, por ejemplo, si desea usar openvpn en una red de doble nat.
Dennis Nolte
Utilicé los valores mtu predeterminados antes de tener este problema, reducir el mtu fue la solución, no el problema. por favor explique su comentario
neofutur
9

En mi caso, no tengo permiso para reducir el tamaño de MTU. Y especificar manualmente el cifrado no funciona.

Puedo conectarme después de acortar la lista de MAC especificando uno, por ejemplo:

ssh -o MACs=hmac-sha2-256 <HOST>
Lacek
fuente
Sabía que no iba a ser el MTU. Si alguien se mete con la MTU en el lado del servidor, puede afectar el rendimiento de la red. El problema debe ser alguna diferencia de versión de OpenSSH y cómo prefieren ciertas combinaciones de funciones cifradas y MAC.
Csaba Toth
2

Empecé a tener este problema hoy, en Windows (ssh distribuido con Git) y Ubuntu.

Parece ser un error en OpenSSH, hay un problema en LauchPad .

Funcionó para mí en Windows forzando el cifrado 3des-cbc y la clave en Ubuntu.

Hacker legal
fuente
2

Cambiar el KexAlgorithm funcionó para mí, y podría ser una opción donde no tienes los derechos del sistema para cambiar la configuración de MTU. Esto también podría ser uno para el equipo de OpenSSH para abordar. p.ej

ssh -o KexAlgorithms=ecdh-sha2-nistp521 [email protected]
SimonSC
fuente
-1

lo resolvimos comentando la línea Ciphers en / etc / ssh / ssh_config

usuario362323
fuente
-2

Parece claro que el diálogo de opciones causa un problema, porque alteré el orden en que Putty negocia el intercambio de claves y el problema resuelto.

rfg
fuente
1
¿Qué parece claro? Esta pregunta fue respondida (con una respuesta aceptada) hace más de 4 años.
David Makogon
-3

cmiiw

  • verifique su permiso ~ / .ssh / certified_keys, debe ser 600

  • marque en on / var / log / secure, / var / log / messages o / var / log / auth

chocripple
fuente
El authorized_keyspermiso no tiene nada que ver con el error ya que el cliente está atascado durante la negociación del protocolo anterior. Puede ser útil verificar los registros del lado del servidor, pero esta línea es más bien un comentario: un voto negativo.
try-catch-finally