No puede ssh, la conexión termina inmediatamente con el estado de salida 254

12

Lo más reciente que recuerdo es cambiar el ulimit suave y duro de memlock a ilimitado. Ahora no puedo meterme en la máquina.

Este es el registro ssh.

Authenticated to IP ([IP]:22).
debug1: channel 0: new [client-session]
debug2: channel 0: send open
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug2: callback start
debug2: fd 3 setting TCP_NODELAY
debug2: client_session2_setup: id 0
debug2: channel 0: request pty-req confirm 1
debug1: Sending environment.
debug1: Sending env LC_CTYPE = 
debug2: channel 0: request env confirm 0
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 Aug  6 07:18:07 2014 from IP-SOURCE
debug2: channel 0: rcvd eof
debug2: channel 0: output open -> drain
debug2: channel 0: obuf empty
debug2: channel 0: close_write
debug2: channel 0: output drain -> closed
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0
debug2: channel 0: rcvd eow
debug2: channel 0: close_read
debug2: channel 0: input open -> closed
debug2: channel 0: rcvd close
debug2: channel 0: almost dead
debug2: channel 0: gc: notify user
debug2: channel 0: gc: user detached
debug2: channel 0: send close
debug2: channel 0: is dead
debug2: channel 0: garbage collecting
debug1: channel 0: free: client-session, nchannels 1
Connection to IP closed.
Transferred: sent 4256, received 2504 bytes, in 0.4 seconds
Bytes per second: sent 9616.9, received 5658.0
debug1: Exit status 254

He intentado lo siguiente sin éxito hasta ahora, antes de publicar aquí:

  1. Intentando un inicio de sesión de perfil normal por ssh user@host 'bash --noprofile'

  2. Forzando un tty por ssh -t user@host

  3. Movido el bash_profile. Traté de pasar por alto ssh user@host.

  4. Cambiar el nombre del limits.confarchivo con la esperanza de que no se lea.

  5. Se reinició el servidor ssh.

  6. Ejecute un comando a través de knifecomoknife ssh "name:server" "come_command"

  7. ssh user@host 'ulimit -l 64', ssh user@host 'ulimit -S -l 64', ssh user@host 'ulimit -H -l 64',ssh user@host 'exec ulimit -H -l 64'

No estoy seguro de si esta forma de ejecutar comandos en línea: ssh user@host "some_command"funciona, porque no puedo obtener una simple lista de directorios. También intenté reiniciar ssh user@host 'reboot'pero no creo que se haya ejecutado el comando. Reinicié la máquina desde AWS también, pero no tuve éxito.

¿Es una causa perdida tratando de ssh? ¿Hay alguna manera de que pueda ingresar al servidor?

theTuxRacer
fuente
1
Si el shell de inicio de sesión del usuario remoto es bash, bash siempre lee ~ / .bashrc sobre ssh. No hay forma de evitar eso. ¿Puedes ir allí y comprobar / alterar tu bashrc de esa manera?
Stéphane Chazelas
Intenté sftp usando CyberDuck, obtuve el SSH_FXP_INITcódigo de error.
theTuxRacer
También puede obtener resultados más detallados utilizando la -vopción, o para más, la -vvopción de incluso más, luego la -vvvopción. Por ej ssh -vvv user@host. Eso puede darle una mejor idea de dónde van las cosas mal.
Warwick
Intenté eso. Aquí es donde obtuve el registro.
theTuxRacer
¿Tiene algún otro archivo (FTP / HTTP ...?) O acceso de shell (consola?) A la máquina que pueda usar?
Stéphane Chazelas

Respuestas:

12

Trata de cambiar

UsePAM yes

en

UsePAM no

en /etc/ssh/sshd_config(para CentOS)

Frad Sorvensen
fuente
Funciona, pero ¿por qué?
FelikZ
1
lo siento, pero no recuerdo la razón)
frad sorvensen
¿Está SELinux en juego aquí? Preguntándome si el contexto de /etc/security/limits.confmanguera y pam no puede usarlo más.
Steve
Si está utilizando una distribución utilizando systemdesta es una mala solución en mi humilde opinión. Esto evitará logindque se abra una sesión y cuando / si el usuario reinicia la máquina, algunos procesos se iniciaron ya que el usuario no se detendrá como se esperaba.
Bigon
En mi caso, la razón es que el límite de Filtros de apertura dura del usuario por procesador es mayor que el nr_open. ( nr_openSe restablece al reiniciar la máquina): se puede comprobar el nr_openpor cat /proc/sys/fs/nr_openy abrir archivos de disco duro ulimit -Hn. Si aún desea que el usuario de inicio de sesión ssh use la configuración de archivo de apertura dura, debe aumentar nr_open:sudo sysctl -w fs.nr_open=NUM_BIGGER_THAN_HARD
Xin Meng
4

Tuve un problema similar, parecía que solo veía el siguiente mensaje extraño:

client_input_channel_req: canal 0 rtype salida-estado respuesta 0.

El usuario con el que intentaba ingresar no tenía un shell predeterminado .

Ejecuté lo siguiente:

chsh -s $(which sh) username 

Y luego pude ssh.

Nota: La
ejecución su usernameestaba devolviendo el código de salida 1(estaba fallando) y ahora simplemente funciona.

GabLeRoux
fuente
1
¡Santa mierda que es críptica! Este fue mi problema también. Intenté hacer un usuario del "sistema" (sin INICIO y sin SHELL) para usar SFTP y pude autenticarme pero no pude usar SFTP o SCP o SSH. Esto solucionó mi problema. ¡Gracias!
Dave
2

Encontré esto en Mac OS X, donde la configuración ~/.bashrctuvo un problema que hizo sshque funcionara, pero sftpque no funcionara. @ stéphane-chazelas parece tener la idea correcta en los comentarios anteriores.

En el sistema remoto a través de SSH, cambie el nombre y vuelva ~/.bashrca ~/.bashrc-MOVEDintentarlo para ver si funciona; luego restaure ~/.bashrcy determine el problema.

En mi sistema ~/.bashrccontenía esto:

if [ -z "$PS1" ] ; then
    exit
fi

Cuál era el probable culpable.

desgarrado
fuente
1

Tuve el mismo problema hoy. Lo primero que noté fue que / var / log estaba al 100%. Lo arreglé y no resolvió el problema. No pude ingresar ni pude iniciar sesión a través de la GUI, pero pude CNTRL + ALT + F2 para llegar a CLI e iniciar sesión de esa manera. Escribí startx y recibí un error de que /tmp/.X0-lock existía.

Eliminé ese archivo (técnicamente eliminé todo de / tmp) y pude iniciar sesión a través de GUI y también a través de ssh.

Jerry P
fuente
¡Gracias! En mi caso, se /homellenó hasta el 100%, lo que he detectado usando df -hCentOS 7.
RAM237
1

Cambié la configuración de Abrir archivos en el archivo de parámetros del núcleo /etc/security/limits.conf a ilimitado y perdí la conectividad.

Después de volver a la normalidad para el usuario root, recuperé la conectividad.

Wrong Example:
## Example hard limit for max opened files
*        hard   nofile unlimited
root     hard   nofile  unlimited
## Example soft limit for max opened files
*        soft   nofile unlimited
root     soft   nofile unlimited

Correct Ex:
## Example hard limit for max opened files
*        hard   nofile 16000
root     hard   nofile 16000
## Example soft limit for max opened files
*        soft   nofile 16000
root     soft   nofile 16000
Santosh Garole
fuente