Не могу ssh, соединение немедленно прерывается со статусом выхода 254

12

Самое последнее, что я помню, это изменение мягкого и жесткого ulimit memlock на неограниченное количество. Теперь я не могу ssh в машину.

Это журнал 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

Я пробовал следующее безуспешно до сих пор, прежде чем размещать здесь:

  1. Попытка входа в Norc Noprofile ssh user@host 'bash --noprofile'

  2. Принуждать к ssh -t user@host

  3. Перемещен bash_profile. Пробовал сшинг мимо ssh user@host.

  4. Переименование limits.confфайла в надежде, что он не будет прочитан.

  5. Перезапустил ssh сервер.

  6. Запустите команду через knifeкакknife 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'

Я не уверен, что этот способ запуска команд inline: ssh user@host "some_command"работает, потому что я не могу получить простой список каталогов. Я также попытался перезагрузиться, ssh user@host 'reboot'но не думаю, что команда была выполнена. Я перезапустил машину из AWS также, но безуспешно.

Это безнадежное дело, пытаясь SSH? Есть ли способ я могу SSH в сервер?

theTuxRacer
источник
1
Если оболочкой входа удаленного пользователя является bash, то bash всегда читает ~ / .bashrc через ssh. Обойти это невозможно. Можете ли вы туда зайти и проверить / изменить ваш bashrc таким образом?
Стефан Шазелас
Пробовал sftp с помощью CyberDuck, получил SSH_FXP_INITкод ошибки.
theTuxRacer
Вы также можете получить более подробный вывод, используя -vопцию или, более того, -vvопцию еще больше, чем -vvvопция. Например ssh -vvv user@host. Это может дать вам лучшее представление о том, где что-то идет не так.
Уорик
Попробовал это. Вот откуда я взял журнал.
theTuxRacer
Есть ли у вас какой-либо другой файл (FTP / HTTP ...?) Или оболочка (консоль?) Для доступа к машине, которую вы можете использовать?
Стефан Шазелас

Ответы:

12

Попробуй поменять

UsePAM yes

на

UsePAM no

в /etc/ssh/sshd_config(для CentOS)

Фрад Сорвенсен
источник
Это работает, но почему?
FelikZ
1
извините, но я не помню причину)
frad sorvensen
SELinux играет здесь? Интересно, не /etc/security/limits.confпопал ли контекст контекста , и Пэм больше не может его использовать.
Стив
Если вы используете дистрибутив, использующий systemdэто плохое решение, ИМХО. Это не позволит logindоткрыть сеанс, и когда / если пользователь перезагружает компьютер, некоторые процессы запускаются, так как пользователь не будет остановлен, как ожидалось.
Бигон
В моем случае причина в том, что пользовательский Open Open Fils Limit на процессор больше, чем nr_open. ( nr_openСбрасывается при перезагрузке машины): вы можете проверить с nr_openпомощью cat /proc/sys/fs/nr_openи жестких открытых файлов ulimit -Hn. Если вы все еще хотите, чтобы пользователь ssh для входа в систему использовал конфигурацию Hard Open File, вам нужно увеличить nr_open:sudo sysctl -w fs.nr_open=NUM_BIGGER_THAN_HARD
Xin Meng
4

У меня была похожая проблема, я, кажется, видел только следующее странное сообщение:

client_input_channel_req: канал 0 rtype ответ о состоянии выхода 0.

У пользователя, с которым я пытался войти, не было оболочки по умолчанию .

Я запустил следующее:

chsh -s $(which sh) username 

И тогда я смог ssh.

Примечание:
Запуск su usernameвозвращал код 1завершения (не удавался), и теперь он просто работает.

GabLeRoux
источник
1
Святое дерьмо, это загадочно! Это была и моя проблема. Я попытался сделать системного пользователя (без HOME и без SHELL) для использования SFTP, и я мог аутентифицироваться, но я не мог использовать SFTP, SCP или SSH. Это исправило мою проблему. Спасибо!
Дэйв
2

Я столкнулся с этим на Mac OS X , где конфигурация ~/.bashrcимела проблемы , который вызвал sshк работе, но sftpв не работы. @ stéphane-chazelas, кажется, имеет правильную идею в комментариях выше.

В удаленной системе через SSH переименуйте ~/.bashrcее ~/.bashrc-MOVEDи попробуйте снова и посмотрите, работает ли она; затем восстановить~/.bashrc и определите проблему.

В моей системе ~/.bashrcсодержится следующее:

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

Который был вероятным виновником.

razzed
источник
1

У меня была такая же проблема сегодня. Первое, что я заметил, было / var / log на 100%, я исправил это, и это не решило проблему. Я не мог войти в ssh и не мог войти через GUI, но я мог CNTRL + ALT + F2, чтобы добраться до CLI и войти таким образом. Я набрал startx и получил ошибку, что /tmp/.X0-lock существует.

Я удалил этот файл (технически я удалил все из / tmp) и смог войти через GUI, а также через ssh.

Джерри П
источник
Спасибо! В моем случае он был /homeзаполнен до 100%, который я обнаружил, используя df -hCentOS 7.
RAM237
1

Я изменил конфигурацию Open files в файле параметров ядра /etc/security/limits.conf на unlimited и потерял связь.

После возврата его к обычному для пользователя root я вернул соединение.

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
Сантош Гароле
источник