¿Cómo acelerar mi inicio de sesión ssh demasiado lento?

42

Correr ssh user@hostnametoma unos 30 segundos. Aquí está el escenario:

  • esta es una VM en la LAN local
  • Las máquinas Windows y Mac obtienen inicio de sesión instantáneo
  • Estoy usando Debian y pude reproducir con una máquina Ubuntu
  • alguien que usa Ubuntu dice que iniciar sesión en mi máquina (LAN local) también es instantáneo
  • El uso de la dirección IP del nombre de host lleva aproximadamente la mitad del tiempo (~ 15s)

[ actualización ]

Usando ssh -vvv user@hostname, aquí es donde más espera:

debug3: authmethod_lookup gssapi-with-mic
debug3: remaining preferred: publickey,keyboard-interactive,password
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic

Y luego espera un poco aquí:

debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found

debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
tshepang
fuente
1
¿usas contraseña o autenticación de clave pública? y si es contraseña, ¿está el archivo a id_dsao id_rsaen tu ~/.ssh? tal vez su instalación ssh intenta la autenticación incorrecto primero y el servidor no niega sino que simplemente ignorar esa petición resulta en que 30s de tiempo de espera
Tobias Kienzler
@tobias Uso contraseña y no tengo "~/.ssh"archivo. Ese es un directorio, y solo tiene un "known_hosts"archivo.
tshepang
55
Parece que tienes un tiempo de espera de DNS de 15 segundos. Tal vez el servidor está haciendo una búsqueda de DNS; si puedes, asegúrate de tener UseDNS noen sshd_configel servidor. En cualquier caso, ejecute ssh -vvv user@hostnamepara ver dónde se cuelga el inicio de sesión.
Gilles 'SO- deja de ser malvado'
@gil Gracias. Actualicé la pregunta. Le pediré al administrador que verifique esa configuración UseDNS .
tshepang
3
@Tshepang: Oh, estás usando la autenticación Kerberos (GSSAPI). No estoy familiarizado con eso. Si está mal configurado, tal vez esté causando la demora. Esto es algo que puede preguntarle a su administrador. DNS podría ser un arenque rojo; Es la causa más común en la naturaleza, pero quizás su problema es diferente.
Gilles 'SO- deja de ser malvado'

Respuestas:

32

Edite su " / etc / ssh / ssh_config " y comente estas líneas:

GSSAPIAuthentication yes
GSSAPIDelegateCredentials no
Alvaro Araos
fuente
3
+1 ¡Buena respuesta! (1) ¿Es una velocidad normal que la conexión de inicio de sesión ssh tome el tiempo del parpadeo del cursor 7 veces? (2) ¿Por qué funciona comentando GSSAPIAuthentication yesy GSSAPIDelegateCredentials no? @Tshepang
Tim
@Tim (1) eso es demasiado tiempo ... dependiendo de la conexión, no espero que tarde más de 2 segundos; (2) No tengo idea, solo que funciona
tshepang
1
El valor predeterminado para la autenticación GSSAPIA en la mayoría de las versiones de OpenSSH es "no", pero algunas distribuciones lo establecen en "sí" en los archivos sshd_config y ssh_config. Si no lo necesita / lo usa, ralentiza el protocolo de enlace de conexión / autenticación.
tgharold
Si la autenticación LDAP / AD está en uso, ¿deshabilitar GSSAPI no se usará un enlace simple, posiblemente enviando contraseñas a través de la red en texto sin formato?
Shannon
Verifique que todos los servidores de nombres todavía existan en /etc/resolv.conf. Si no lo hacen, sácalos. Esto resolvió mi problema.
tecnócrata
30

Tuve este problema y lo resolví desactivando la resolución inversa de DNS en SSH.

Entonces, en sshd_configel servidor, cambie esto:

 #UseDNS yes

a esto:

UseDNS no
Earlz
fuente
1
Hice el cambio (aunque no tenía la opción UseDNS comentada ), restablecí mi servidor ssh y seguí con el mismo problema.
tshepang
2
@Tshe hmm, extraño. Los únicos problemas de velocidad que he tenido con SSH se debieron a esto.
Earlz
1
Estaba escéptico cuando uso para iniciar sesión con la dirección IP (LAN local), pero esta solución solucionó mi problema. Por el bien de Google, aunque ocurrió justo después, el retraso no tuvo nada que ver con el mensaje "key: /home/mylogin/.ssh/id_ecdsa ((nil))" (cuando se ejecuta ssh -vvv).
Skippy le Grand Gourou
7

¿Has verificado tu configuración de DNS?

Pruebe el ajuste mdns offen /etc/host.conf.

Esto deshabilita la resolución mdns y me ayudó mucho.

EDITAR:

Parece que Gentoo está manejando esto un poco diferente. Para deshabilitar las búsquedas de DNS de multidifusión, debe cambiar el archivo /etc/nsswitch.conf.
Debería haber algo como:

hosts:          files mdns

Cámbielo a:

hosts:          files dns
cristiano
fuente
+1 buena idea. @Tshepang ¿ssh se conecta más rápido cuando usas la IP del hostname directamente?
Tobias Kienzler
@tobias toma la mitad de tiempo
tshepang
Me estoy /etc/host.conf: line 2: bad command quitando mdns '' cuando corro ssh user@hostname.
tshepang
Parece que esta es una configuración obsoleta, desde glibc 2.3.x (2006): forums.gentoo.org/viewtopic-t-476558-highlight-mdns.html . ¿Qué estás usando (SO, versión glic)?
tshepang
1
Está diciendo que solo toma la mitad del tiempo cuando usa la dirección IP. Esto significa que tiene un problema con la resolución de su nombre (IP => FQDN o FQDN => IP). Así que primero eche un vistazo a su configuración de DNS y luego trate de averiguar si tiene un problema con ssh o no.
Christian el
3

Agregar el nombre de host a /etc/hostsveces puede resolver este problema.

Don mclachlan
fuente
Funciona para un solo nombre de host, pero la solución de Earlz es más genérica (y soluciona el mismo problema).
Skippy le Grand Gourou
1

Compruebe también si nscdestá instalado y funcionando.

No tener una memoria caché dns puede aumentar el tiempo que lleva resolver el registro PTR (suponiendo que el cliente ssh esté realizando una búsqueda inversa dns para la dirección IP del servidor)

altmas5
fuente
0

Tengo el mismo problema en el entorno de Windows 2008 R2 pero "useDNS no" no funciona.

Intento agregar al archivo de hosts la IP y el host del servidor de conexión y es más rápido en 30 segundos. Lo que me hace pensar que la resolución podría estar en DNS.

Intento agregar servidores DNS pero esto no lo resuelve.

Mi servidor tiene dos sufijos DNS. 1 para el dominio corporativo al que pertenece el servidor (dominio.com) y el otro para su interfaz externa que se conecta a una red privada (dominio.net).

El orden de sufijo DNS es primero dominio.net luego dominio.com siguiente

Mis clientes SFTP / SSH están en el dominio corporativo. Por cierto, los clientes problemáticos son de dominio corporativo.

Lo que funciona para mí es que primero hago dominio.com luego dominio.net segundo

El retraso de conexión de 2m30s antes se convirtió solo en 3-4s.

Eric Arpon
fuente