El establecimiento de la conexión SSH es demasiado lento

El establecimiento de la conexión SSH es demasiado lento

Tengo problemas al conectarme a mi máquina virtual Centos 6.3 local con 500 MB de RAM.

A continuación se muestra el resultado de ssh -vvv localhostla conexión:

OpenSSH_6.3, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /usr/local/etc/ssh_config
debug2: ssh_connect: needpriv 0
debug1: Connecting to localhost [127.0.0.1] port 22.
^^^^^^^^^^ Loading this statement takes more than a minute

debug1: Connection established.
...

debug1: Next authentication method: password 
root@localhost's password:
^^^^^^^^^^ This step takes a minute too

debug3: packet_send2: adding 64 (len 50 padlen 14 extra_pad 64)
debug2: we sent a password packet, wait for reply
debug1: Authentication succeeded (password).
Authenticated to localhost ([127.0.0.1]:22).
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug2: callback start
debug2: fd 3 setting TCP_NODELAY
debug3: packet_set_tos: set IP_TOS 0x10
debug2: client_session2_setup: id 0
debug2: channel 0: request pty-req confirm 1
debug2: channel 0: request shell confirm 1
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug2: channel_input_status_confirm: type 99 id 0
debug2: PTY allocation request accepted on channel 0
debug2: channel 0: rcvd adjust 2097152
debug2: channel_input_status_confirm: type 99 id 0
debug2: shell request accepted on channel 0
Last login: Wed Oct  9 13:27:02 2013 from 10.0.0.2

Sugiera cómo puedo deshacerme de este retraso.

Respuesta1

Supongo que el problema son los tiempos de espera de las solicitudes de DNS. Intente conectarse por dirección IP en lugar de nombre de host y desactive la UseDNSopción en el servidor al que se está conectando. Aparte de eso:

  1. Suponiendo que se esté conectando allí desde el host de la VM, esperaría ssh localhostconectarse al host, no a la VM invitada. A menos que tengas alguna configuración de red interesante, por supuesto.

  2. durante el primer retraso, es posible que desee ejecutarlo stracey verificar en qué llamada del sistema está el sshcliente.

  3. para el segundo retraso, ejecute topla VM para ver qué sucede allí mientras se conecta a ella. Al mismo tiempo, sugiero ejecutar el demonio SSH en modo de depuración en un puerto alternativo y conectarse a esa instancia; verá dónde está esperando; simplemente ejecute (como root):

    sshd -ddd -p 2222 -o UsePrivilegeSeparation=no
    

    esto iniciará el demonio SSH en el puerto 2222, registrará mucha información ( -ddd) y no utilizará la separación de privilegios durante el inicio de sesión (deshabilitar la separación de privilegios hará que sea más fácil ver lo que sucede en strace, ya que solo se usará un proceso). . También puede agregar -o UseDNS=nopara deshabilitar la opción mencionada anteriormente.

Respuesta2

Si se trata de una máquina virtual, podría deberse a una entropía insuficiente.Utilice esta línea para monitorear la entropía disponible antes/durante su intento de conexión:

while true; do sleep 5; cat /proc/sys/kernel/random/entropy_avail; done

Si ya es bastante bajo o disminuye significativamente durante el intento de conexión, es muy probable que sea el culpable.

EDITAR:Hacer esto afecta la entropía disponible en sí, ya que iniciar nuevos procesos consume entropía. Ver tambiénhttps://blog.flameeyes.eu/2011/03/entropy-broken

Puede aumentar la entropía disponible instalando un demonio ( rng-toolso clrngd) que intenta recopilar más entropía o asegurándose de que su VM tenga asignado un dispositivo de entropía adecuado que depende de su solución de virtualización.

información relacionada