¿Por qué la solicitud de "contraseña" tarda para siempre cuando uso SSH en mi servidor Ubuntu 9.05?


27

Respuesta: De hecho, estaba realizando una resolución inversa de DNS. Según las sugerencias a continuación y este artículo , agregué "UseDNS no" a mi sshd_config, reinicié ssh y ahora aparece el mensaje de contraseña de inmediato.

Cuando ingreso SSH a mi servidor, aparece el mensaje estándar "iniciar sesión como:", seguido del mensaje "contraseña de usuario @ host:". Por alguna razón, el segundo siempre tarda un tiempo en mostrarse. Mi servidor no está bajo ninguna carga y generalmente ejecuta comandos bastante rápido.

Ahora, estamos hablando solo 10 segundos más o menos entre el momento en que presiono Enter para el nombre de usuario y cuando aparece el segundo mensaje, pero cuando lo haces mucho se vuelve molesto. Sospecho que Ubuntu está buscando mi cuenta de usuario, pero tiene <5 cuentas en toda la instalación.

La actualización @Josh / var / log / messages contiene esta gema:

Oct 28 16:54:59 Athena sudo: pam_sm_authenticate: Called
Oct 28 16:54:59 Athena sudo: pam_sm_authenticate: username = [msmith]
Oct 28 16:54:59 Athena sudo: Warning: Using default salt value (undefined in ~/.ecryptfsrc)
Oct 28 16:55:01 Athena sudo: Passphrase key already in keyring; rc = [1]
Oct 28 16:55:02 Athena sudo: Passphrase key already in keyring; rc = [1]
Oct 28 16:55:02 Athena sudo: There is already a key in the user session keyring for the given passphrase.

Donde msmith es mi nombre de usuario. Qué significa todo esto?


¿Sabes (o quieres aprender) cómo usar rastreadores de paquetes como Wireshark o tcpdump? Eso puede decirle si el servidor está usando todo ese tiempo por sí mismo o si realmente se está comunicando con el cliente.
Arjan

Respuestas:


17

¿Es posible que esté haciendo una búsqueda inversa de DNS en su IP? Puede verificar los resultados en línea si el cliente está usando una dirección IP pública, o usar algo como lo siguiente de su servidor:

dig -x CLIENT_IP_ADDRESS

¿Hay algo adentro /var/log/messages?


Tengo una Advertencia en el registro: Advertencia: Uso del valor de sal predeterminado (indefinido en ~ / .ecryptfsrc). Publiqué toda la sección de la pregunta para su análisis.
rcampbell

@ rrc7cz, entonces, ¿qué pasa con ese DNS inverso? ¿Su dirección IP se resuelve en algo? (Dudo que ayude, ya que la mayoría de las veces tomará algunos apretones de manos para decidir si se debe mostrar un mensaje para el nombre de usuario. Una prueba rápida con Wireshark en mi Mac muestra que SSH se inicia mucho antes de que se solicite el nombre de usuario. ¿Pero tal vez algunos clientes soliciten ese nombre de usuario antes de intentar conectarse ...?)
Arjan

3
Tuve este problema de búsqueda de DNS inverso ralentizó mis conexiones ssh en un par de instalaciones ... Si encuentra que este es el caso, comente la línea "UseDNS yes" en / etc / ssh / sshd_config y reinicie sshd.
John Barrett

@john, ¿recuerdas si eso se ralentizó después de escribir el nombre de usuario?
Arjan

1
¡"UseDNS no" también me ayudó! ¡UpVotes para preguntas y respuestas!
Grizly

14

Probablemente la resolución inversa de DNS (el servidor intenta obtener el nombre del cliente con la IP dada) está tomando tiempo. ¿Puede verificar si / etc / ssh / sshd_config tiene la configuración "VerifyReverseMapping yes"? Ajústelo a "VerifyReverseMapping no" y verifique si ayuda.

Editar: Parece que VerifyReverseMapping ahora está en desuso y useDNS es la nueva configuración en sshd_config .


Puede ser cierto, pero ¿tiene sentido entonces que la solicitud del nombre de usuario se muestre de inmediato, después de lo cual se tarda 10 segundos en solicitar la contraseña?
Arjan

El cliente puede resolver el nombre del servidor y enviar una solicitud, es por eso que la solicitud del usuario se muestra de inmediato. Pero luego el servidor intenta obtener el nombre del cliente (resolución inversa de DNS). Esto puede expirar si la dosis de entrada no existe. La configuración "VerifyReverseMapping" en sshd-config controla esta comprobación.
secureBadshah

1
Esta fue la razón de la lentitud en mi caso, por lo que tiene sentido al menos en algunos casos. Tenga en cuenta que el valor predeterminado es yes, así que no solo busque si useDNSestá configurado :)
Nanne


3

Siempre puede iniciar sesión con el nombre de usuario para comenzar:

ssh user@server

¿eso tiene algún efecto?

Si está utilizando PuTTY, se puede configurar en Conexión -> Datos como nombre de usuario de inicio de sesión automático.


1
Si bien esto obviamente no acelera el tiempo que tarda la solicitud de contraseña en aparecer, definitivamente acelera el proceso general de inicio de sesión. Gracias
rcampbell

3

Si no tiene nombres de dominio adecuados para todo, simplemente invente algo y póngalo /etc/hosts. Mira si eso va más rápido ... no te molestes con .comsolo usar "bob, carol, ted, alice" o lo que quieras ...

Si el problema son los tiempos de espera de resolución, esto lo solucionará.


1

Recuerde que el cliente también realizará una comprobación de verificación de DNS inverso, que puede demorar 30 segundos o más si el mapeo de DNS inverso no existe con ciertas configuraciones de resolución.

En cualquiera /etc/ssh/ssh_configo en ~/.ssh/configconjunto CheckHostIP nopara deshabilitar esta búsqueda del lado del cliente.

Ver man 5 ssh_configpara más detalles.


1

He encontrado una solución alternativa a este problema: - http://www.patrickmin.com/linux/tip.php?name=ssh_pause

Estaba teniendo el mismo problema al iniciar sesión en una máquina de compilación de Linux usando Putty en Windows. Agregar la dirección IP de mi ventana de Windows a / etc / hosts en la máquina Linux resolvió el problema.


3
Bienvenido a Super User: generalmente preferimos que incluya detalles y no solo enlaces. ¿Podría EDITAR su respuesta para agregar más información del enlace?
Simon Sheehan

1

Solo para el registro, experimenté el mismo problema en el que ssh sería rápido desde mi casa hasta mi servidor doméstico (principalmente usándolo para git), pero tomaría unos 10-20 segundos en el trabajo obtener una solicitud de contraseña.

Tuve que apagar UseDNS noy reiniciar sshd sudo systemctl restart sshd.service. Luego funciona desde todos los lugares.

Sé que la pregunta es respondida y aceptada, pero quería agregar la información ya que tuve que establecerla "activamente" en no para que dejara de usar dns.


0

Compruebe si se está ejecutando nslcd (demonio LDAP):

ps -ef | grep nslcd

Puede causar este problema.

Si se está ejecutando, deténgalo y elimínelo de la lista de servicios.

service nslcd stop
chkconfig nslcd off
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.