Nie można ssh, połączenie kończy się natychmiast ze statusem wyjścia 254

12

Najnowszą rzeczą, jaką pamiętam, jest zmiana miękkiego i twardego ulimit na nieograniczony. Teraz nie mogę ssh do maszyny.

To jest dziennik 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

Próbowałem do tej pory bezskutecznie, zanim opublikowałem tutaj:

  1. Próbuję zalogować się do norc noprofile przez ssh user@host 'bash --noprofile'

  2. Wymuszanie tty przez ssh -t user@host

  3. Przeniesiono profil bash. Próbowałem sshing przez ssh user@host.

  4. Zmiana nazwy limits.confpliku w nadziei, że nie zostanie odczytany.

  5. Zrestartowano serwer ssh.

  6. Uruchom polecenie za pomocą 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'

Nie jestem pewien, czy ten sposób uruchamiania poleceń inline: ssh user@host "some_command"działa, ponieważ nie mogę uzyskać prostej listy katalogów. Próbowałem również uruchomić ponownie, ssh user@host 'reboot'ale nie sądzę, aby polecenie zostało wykonane. Zrestartowałem maszynę również z AWS, ale nie powiodło się.

Czy to zgubiona przyczyna próbuje ssh? Czy jest jakiś sposób, żeby ssh mógł połączyć się z serwerem?

theTuxRacer
źródło
1
Jeśli powłoką logowania zdalnego użytkownika jest bash, wtedy bash zawsze czyta ~ / .bashrc przez ssh. Nie można tego obejść. Czy możesz tam sftp i sprawdzić / zmienić swój bashrc w ten sposób?
Stéphane Chazelas
Próbowałem sftp za pomocą CyberDuck, otrzymałem SSH_FXP_INITkod błędu.
theTuxRacer
Możesz również uzyskać bardziej szczegółowe dane wyjściowe, korzystając z -vopcji, lub więcej -vvopcji opcji jeszcze więcej, a następnie -vvvopcji. Np ssh -vvv user@host. To może dać ci lepszy obraz tego, co się dzieje źle.
Warwick,
Próbowałem tego. Z tego miejsca mam dziennik.
theTuxRacer
Czy masz dostęp do innego komputera (FTP / HTTP ...?) Lub powłoki (konsoli?), Z którego możesz korzystać?
Stéphane Chazelas

Odpowiedzi:

12

Spróbuj zmienić

UsePAM yes

na

UsePAM no

w /etc/ssh/sshd_config(dla CentOS)

frad sorvensen
źródło
Działa, ale dlaczego?
FelikZ
1
przepraszam, ale nie pamiętam powodu)
frad sorvensen
Czy w grze jest SELinux? Zastanawiam się, czy kontekst /etc/security/limits.confzostał ukryty, a pam nie może go już używać.
steve
Jeśli korzystasz z dystrybucji korzystającej z systemdtego, to złe rozwiązanie IMHO. Zapobiegnie logindto otwarciu sesji, a kiedy / jeśli użytkownik uruchomi ponownie komputer, niektóre procesy zostaną uruchomione, ponieważ użytkownik nie zostanie zatrzymany zgodnie z oczekiwaniami.
Bigon,
W moim przypadku powodem jest to, że użytkownik Hard Open Fils Limit na procesor jest większy niż nr_open. ( nr_openresetuje się przy ponownym uruchomieniu urządzenia): możesz sprawdzić pliki „ nr_openby” cat /proc/sys/fs/nr_openi „hard open” ulimit -Hn. Jeśli nadal chcesz, aby użytkownik ssh korzystał z narzędzia Hard Open File Config, musisz zwiększyć nr_open:sudo sysctl -w fs.nr_open=NUM_BIGGER_THAN_HARD
Xin Meng
4

Miałem podobny problem, zdawało mi się, że widzę tylko następującą dziwną wiadomość:

client_input_channel_req: channel 0 rtype exit-status reply 0.

Użytkownik, do którego próbowałem sshwejść, nie miał domyślnej powłoki .

Uruchomiłem następujące:

chsh -s $(which sh) username 

I wtedy mogłem ssh.

Uwaga:

Uruchomienie su usernamezwróciło kod wyjścia 1(nie powiodło się), a teraz po prostu działa.

GabLeRoux
źródło
1
Cholera jasna, tajemnicza! To był również mój problem. Próbowałem utworzyć użytkownika „systemowego” (bez HOME i SHELL) do korzystania z SFTP i mogłem się uwierzytelnić, ale nie mogłem używać SFTP, SCP lub SSH. To naprawiło mój problem. Dzięki!
Dave
2

Ja spotkałem to na Mac OS X , gdzie w konfiguracji ~/.bashrcmiał problemu, który spowodował sshdo pracy, ale sftpaby nie pracy. @ stéphane-chazelas wydaje się mieć właściwy pomysł w powyższych komentarzach.

Na pilocie zdalnego systemu przez SSH, zmiana nazwy ~/.bashrc, aby ~/.bashrc-MOVEDi spróbuj go ponownie i sprawdzić, czy to działa; następnie przywróć ~/.bashrci określ problem.

W moim systemie ~/.bashrczawierało to:

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

Który był prawdopodobnym winowajcą.

razzed
źródło
1

Zmieniono konfigurację Otwórz pliki w pliku parametrów jądra /etc/security/limits.conf na nieograniczony i utraciłem łączność.

Po przywróceniu go do normalnego trybu dla użytkownika root odzyskałem łączność.

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
źródło
1

Miałem dzisiaj ten sam problem. Pierwszą rzeczą, którą zauważyłem, było /var/log100%.

Naprawiłem to i to nie rozwiązało problemu. Nie mogłem się sshzalogować ani nie mogłem zalogować się przez GUI, ale mogłem Ctrl+ Alt+, F2aby dostać się do CLI i zalogować się w ten sposób. Wpisałem startxi otrzymałem błąd, który /tmp/.X0-lockistniał.

Usunąłem ten plik (technicznie usunąłem wszystko z /tmp) i mogłem zalogować się przez GUI, a także przez ssh.

Jerry P.
źródło
Dzięki! W moim przypadku zostało /homewypełnione do 100%, które df -h
wykryłem