ssh se bloquea sin solicitud de contraseña: funciona en la raíz u otras cuentas


14

Tenía un inicio de sesión basado en clave ssh que funcionaba bien. Luego, cambié el nombre de host en mi computadora, y el inicio de sesión basado en clave dejó de funcionar. Parecía tener sentido. las claves probablemente se basaron en mi antiguo nombre de host. Entonces, eliminé todas mis claves y todos los archivos en ~ / .ssh / y los volví a generar (y cambié las claves autorizadas en los servidores a los que me conecto)

Ahora, cada vez que intento ssh, simplemente se cuelga sin la solicitud de contraseña, sin importar a dónde intente ssh, incluso en servidores en los que no tengo configurado un inicio de sesión basado en claves. No hay nada en .ssh / config.

Además, cuando 'su -' a root, ssh funciona perfectamente. sin problemas en absoluto. Esto solo ocurre en mi cuenta de usuario.

A continuación se muestra información de depuración de ssh

ssh -vv mylogin@myremoteserver.com
OpenSSH_5.2p1, OpenSSL 0.9.8k 25 de marzo de 2009
debug1: lectura de datos de configuración /Users/myname/.ssh/config
debug1: lectura de datos de configuración / usr / etc / ssh_config
......
debug1: el host 'myremoteserver.com' es conocido y coincide con la clave de host RSA.
debug1: clave encontrada en /Users/myname/.ssh/known_hosts:1
debug2: conjunto de bits: 512/1024
debug1: ssh_rsa_verify: firma correcta
debug2: kex_derive_keys
debug2: set_newkeys: modo 1
debug1: SSH2_MSG_NEWKEYS enviados
debug1: esperando SSH2_MSG_NEWKEYS
debug2: set_newkeys: modo 0
debug1: SSH2_MSG_NEWKEYS recibidos
debug1: SSH2_MSG_SERVICE_REQUEST enviado
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT recibido

Y luego simplemente cuelga aquí .....

Aquí está la salida dtruss (como strace pero para OSX) cerca del final donde cuelga: sudo dtruss ssh -vv mylogin@myremoteserver.com

seleccionar (0x4, 0x508200, 0x0, 0x0, 0x0) = 1 0
leer (0x3, "$ \ 222 \ 351 {L \ 363 \ 261 \ 25063sN \ 216 \ 300 @ q7 \ 203 \ 276b \ 257 \ 354 \ 337 \ 356 \ 260! {\ 342 \ 017 \ 271 = \ 222, \ 245 \ 347t \ 006 \ 225 \ 257 \ 333; \ 204 \ 020] \ 242 \ 005z # \ 0 ", 0x2000) = 48 0
escribir (0x2, "debug2: service_accept: ssh-userauth \ r \ n \ 0", 0x26) = 38 0
conectar (0x4, 0xBFFFEEA2, 0x6A) = 0 0
escribir (0x4, "\ 0", 0x4) = 4 0
escribir (0x4, "\ v5 \ 004 \ 0", 0x1) = 1 0
leer (0x4, "\ 0", 0x4) = -1 Err # 4

Parece estar intentando leer algo y simplemente se cuelga de esto. Si alguien tiene alguna sugerencia o idea, ¡estaría muy agradecido!


Tengo este mismo problema en Snow Leopard (10.6.8 con los últimos parches de Apple). Solo sucede cuando intenta conectarse a servidores a través de una VPN. Un reinicio soluciona el problema temporalmente, pero inevitablemente vuelve. La búsqueda de DNS del servidor no es el problema (lo probé). Tiene algo que ver con el estado de SSH en el cliente. Matar ssh-agent o cambiar a root no resuelve el problema.
Daniel

Respuestas:


9

La razón por la que su cliente ssh se bloquea para su cuenta pero no para otras cuentas (root) es probablemente porque hay algo mal con su agente ssh. O que ssh-agentno se está ejecutando o que su configuración es incorrecta de alguna manera.

Para tener una confirmación de eso, puede intentar lo siguiente:

unset SSH_AUTH_SOCK
ssh mylogin@myremoteserver.com

Si luego se le pide que ingrese la frase de contraseña a su ssh_key, significa que tiene un problema con su agente ssh.

Vea también mi publicación sobre esta pregunta relacionada .


¡Esto hizo el trabajo por mí! Sin embargo, necesito hacerlo cada vez que reinicie mi computadora. ¿Conoces una forma de arreglar esto permanentemente?
Johan Dettmar

@JohanDettmar revisa mi publicación vinculada y los consejos que contiene. Si no le ayuda más, probablemente sea mejor hacer una nueva pregunta que describa su problema con más detalles.
Tonin

7

¿Puedo interesarle en DNS inverso?

Esencialmente, el cliente está haciendo el DNS inverso en el servidor, o viceversa.

Propongo una prueba:

Deshabilite las búsquedas de DNS en el servidor editando / etc / ssh / sshd_config y asegurándose de que "UseDNS" esté configurado en "no".

Ejecute "service ssh reload" (o lo que sea que haga que su demonio ssh vuelva a leer la configuración), luego intente nuevamente.

Incidentalmente, no sucede que finalmente te avise después de un largo período de tiempo, ¿verdad?

Otra cosa que puede verificar es mirar el contenido de / etc / hosts en el servidor para asegurarse de que no haya nada malo allí.


1

Verifique los permisos en el directorio ~ / .ssh y los archivos que contiene. Su umask predeterminada puede ser demasiado permisiva y, cuando recreó los archivos, es posible que les haya otorgado permisos incorrectos sin darse cuenta. Esto me ha quemado varias veces. Ninguno de los clientes (o servidores) ssh que utilicé nunca dio un mensaje de error útil sobre esto ...


gracias por el consejo. Parece que mis permisos son los mismos. Puedo usar ssh fine con mi cuenta raíz, y verifiqué que los permisos son los mismos. Lo extraño es que simplemente se cuelga y no dice nada. Gracias por el intento!
ahorrador

1

tiene espacio libre en disco en su cliente (y en su servidor)?

df -h


Gracias. Si. mucho espacio. Más de 100 conciertos gratis. Gracias por el consejo aunque.
ahorrador

1

Tuve un problema similar.

ssh domain.ip:user.name

Parece que podría evitar el problema forzando un nombre de inicio de sesión como este.

ssh -v domain.ip -l user.name

1

Para mí, la actualización a Snow Leopard resolvió el problema. Entonces, creo que estaba relacionado con un error en OSX.


0

Si se debe a una clave guardada, debería poder eliminarla de su directorio ~ / .ssh en el archivo known_hosts. Simplemente encuentre la entrada y elimínela, luego debería volver a solicitarle.

Por otro lado, debería dar una advertencia cuando el host no coincide con lo que está grabado.

He tenido problemas en los que en OS X la búsqueda del nombre de host actúa como si fallara; la conexión simplemente agota el tiempo de espera de tanto tiempo, o cuando aparece el aviso, ha estado esperando tanto tiempo que le da unos diez segundos para que ingrese una contraseña antes de desconectar la conexión. Nunca pude rastrearlo a pesar de que las personas sugirieron agregar el host en cuestión al archivo host. Supongo que fue solo una "falla con las búsquedas de DNS de OS X" y se esperaba que fuera tolerado ... si alguien más tuviera este problema y lo resolviera, me encantaría saberlo.


Gracias Bart! Así que esencialmente he eliminado todo lo que hay dentro de .ssh (sabiamente o no) y ahora no hay nada allí. Parece que todavía se congela y continúa colgando. Como también eliminé conocido_hosts, primero me pregunta si deseo continuar conectando, coloca la clave en el archivo conocido_hosts y se cuelga en el mismo lugar que antes. Actualizaré rápidamente mi respuesta para aclarar este punto. Realmente aprecio tu ayuda.
ahorrador

1
Realmente suena como el problema técnico con el que me encontraba en una MacBook. Parecía estar relacionado con las búsquedas de DNS de alguna manera, finalmente me di por vencido y simplemente viví con una pausa mucho antes de conectarme y esperé que se solucionara más tarde.
Bart Silverstrim

0

Verifique los registros en el servidor. Suele estar en /var/log/auth.log(Debian / Ubuntu) o /var/log/secure(RedHat / CentOS). Cualquier problema con la conexión generalmente se registra allí.


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.