Impossible de ssh, la connexion se termine immédiatement avec l'état de sortie 254

12

La chose la plus récente dont je me souviens est de changer l'ulimit de memlock doux et dur en illimité. Maintenant, je ne peux plus entrer dans la machine.

Ceci est le journal 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

J'ai essayé sans succès jusqu'à maintenant, avant de poster ici:

  1. Essayer une connexion au noprofile norc par ssh user@host 'bash --noprofile'

  2. Forcer un tty par ssh -t user@host

  3. Déplacé le bash_profile. J'ai essayé de battre ssh user@host.

  4. Renommer le limits.conffichier en espérant qu'il ne sera pas lu.

  5. Serveur ssh redémarré.

  6. Exécutez une commande via knifeasknife 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'

Je ne sais pas si cette façon d'exécuter des commandes en ligne: ssh user@host "some_command"fonctionne, car je ne peux pas obtenir une simple liste de répertoires. J'ai également essayé de redémarrer ssh user@host 'reboot'mais je ne pense pas que la commande a été exécutée. J'ai également redémarré la machine à partir d'AWS, mais sans succès.

Est-ce une cause perdue essayant de ssh? Existe-t-il un moyen de ssh sur le serveur?

theTuxRacer
la source
1
Si le shell de connexion de l'utilisateur distant est bash, bash lit toujours ~ / .bashrc sur ssh. Il n'y a aucun moyen de contourner cela. Pouvez-vous y installer et vérifier / modifier votre bashrc de cette façon?
Stéphane Chazelas
Sftp essayé en utilisant CyberDuck, a obtenu le SSH_FXP_INITcode d'erreur.
theTuxRacer
Vous pouvez également obtenir une sortie plus détaillée en utilisant l' -voption, ou pour plus, l' -vvoption pour encore plus, puis l' -vvvoption. Par exemple ssh -vvv user@host. Cela peut vous donner une meilleure idée de la situation.
Warwick
J'ai essayé ça. C'est de là que j'ai obtenu le journal.
theTuxRacer
Avez-vous un autre accès (FTP / HTTP ...?) Ou shell (console?) À la machine que vous pouvez utiliser?
Stéphane Chazelas

Réponses:

12

Essayer de changer

UsePAM yes

sur

UsePAM no

dans /etc/ssh/sshd_config(pour CentOS)

frad sorvensen
la source
Ça marche, mais pourquoi?
FelikZ
1
désolé, mais je ne me souviens pas de la raison)
frad sorvensen
SELinux est-il en jeu ici? Vous vous demandez si le contexte de a /etc/security/limits.confété arrosé et que pam ne peut plus l'utiliser.
steve
Si vous utilisez une distribution en utilisant systemdc'est une mauvaise solution à mon humble avis. Cela empêchera logindd'ouvrir une session et lorsque / si l'utilisateur redémarre la machine, certains processus démarrés car l'utilisateur ne sera pas arrêté comme prévu.
Bigon
Dans mon cas, la raison en est que l'utilisateur Hard Open Fils Limit par processeur est plus grand que le nr_open. ( nr_openEst remis à zéro lors du redémarrage de la machine): vous pouvez vérifier le nr_openpar cat /proc/sys/fs/nr_open, et ouvrir des fichiers durs ulimit -Hn. Si vous voulez toujours que l'utilisateur de connexion ssh utilise la configuration Hard Open File, vous devez augmenter nr_open:sudo sysctl -w fs.nr_open=NUM_BIGGER_THAN_HARD
Xin Meng
4

J'ai eu un problème similaire, il me semblait ne voir que l'étrange message suivant:

client_input_channel_req: canal 0 rtype exit-status response 0.

L'utilisateur dans lequel j'essayais de ssh n'avait pas de shell par défaut .

J'ai couru ce qui suit:

chsh -s $(which sh) username 

Et puis j'ai pu ssh.

Remarque: L'
exécution su usernamerenvoyait le code de sortie 1(échouait) et maintenant cela fonctionne.

GabLeRoux
la source
1
Putain de merde qui est cryptique! C'était aussi mon problème. J'ai essayé de faire un utilisateur "système" (pas de HOME et pas de SHELL) pour utiliser SFTP et je pouvais m'authentifier mais je ne pouvais pas utiliser SFTP ou SCP ou SSH. Cela a résolu mon problème. Merci!
Dave
2

Je l' ai rencontré ce sur Mac OS X où la configuration ~/.bashrcavait un problème qui a causé sshau travail, mais sftpà ne pas travailler. @ stéphane-chazelas semble avoir la bonne idée dans les commentaires ci-dessus.

Sur le système distant via SSH, renommez- ~/.bashrcle ~/.bashrc-MOVEDet réessayez et voyez si cela fonctionne; puis restaurez ~/.bashrcet déterminez le problème.

Sur mon système, le ~/.bashrccontenu était le suivant:

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

Quel était probablement le coupable.

ébloui
la source
1

J'ai eu le même problème aujourd'hui. La première chose que j'ai remarquée était que / var / log était à 100%, j'ai corrigé cela et cela n'a pas résolu le problème. Je ne pouvais pas ssh ni me connecter via l'interface graphique, mais je pouvais CNTRL + ALT + F2 pour accéder à CLI et me connecter de cette façon. J'ai tapé startx et j'ai reçu une erreur indiquant que /tmp/.X0-lock existait.

J'ai supprimé ce fichier (techniquement, j'ai tout supprimé de / tmp) et j'ai pu me connecter via l'interface graphique et également via ssh.

Jerry P
la source
Merci! Dans mon cas, il a été /homerempli à 100%, ce que j'ai détecté en utilisant df -hCentOS 7.
RAM237
1

J'ai changé la configuration des fichiers ouverts dans le fichier de paramètres du noyau /etc/security/limits.conf en illimité et j'ai perdu la connectivité.

Après être revenu à la normale pour l'utilisateur root, j'ai récupéré la connectivité.

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
la source