Tidak bisa ssh, koneksi langsung berakhir dengan status keluar 254

12

Hal terakhir yang saya ingat adalah mengubah memimit soft dan hard menjadi tidak terbatas. Sekarang saya tidak bisa ssh ke mesin.

Ini adalah log 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

Saya telah mencoba yang berikut ini tanpa hasil sampai sekarang, sebelum memposting di sini:

  1. Mencoba masuk dengan norop noprofile oleh ssh user@host 'bash --noprofile'

  2. Memaksa satu tty oleh ssh -t user@host

  3. Memindahkan bash_profile. Sudah mencoba lewat ssh user@host.

  4. Mengganti nama limits.conffile dengan harapan tidak akan dibaca.

  5. Server ssh yang dimulai ulang.

  6. Jalankan perintah 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'

Saya tidak yakin apakah ini cara menjalankan perintah inline: ssh user@host "some_command"berfungsi, karena saya tidak bisa mendapatkan daftar direktori sederhana. Saya juga mencoba me-reboot dengan ssh user@host 'reboot'tetapi tidak berpikir perintah itu dijalankan. Saya me-restart mesin dari AWS juga, tetapi tidak berhasil.

Apakah ini alasan yang hilang saat mencoba ssh? Apakah ada cara saya dapat ssh ke server?

theTuxRacer
sumber
1
Jika shell login dari pengguna jarak jauh adalah bash, maka bash selalu membaca ~ / .bashrc over ssh. Tidak ada jalan lain untuk itu. Bisakah Anda sftp di sana dan memeriksa / mengubah bashrc Anda seperti itu?
Stéphane Chazelas
Mencoba sftp menggunakan CyberDuck, mendapat SSH_FXP_INITkode kesalahan.
theTuxRacer
Anda juga bisa mendapatkan output yang lebih detail menggunakan -vopsi, atau lebih banyak, -vvopsi untuk lebih banyak, lalu -vvvopsi. Misalnya ssh -vvv user@host. Itu mungkin memberi Anda gagasan yang lebih baik tentang di mana segala sesuatu berjalan salah.
Warwick
Sudah mencobanya. Di sinilah saya mendapatkan log.
theTuxRacer
Apakah Anda memiliki akses file lain (FTP / HTTP ...?) Atau shell (konsol?) Ke mesin yang dapat Anda gunakan?
Stéphane Chazelas

Jawaban:

12

Cobalah untuk berubah

UsePAM yes

di

UsePAM no

dalam /etc/ssh/sshd_config(untuk CentOS)

frad sorvensen
sumber
Berhasil, tapi mengapa?
FelikZ
1
maaf, tapi saya tidak ingat alasannya)
frad sorvensen
Apakah SELinux bermain di sini? Ingin tahu apakah konteks /etc/security/limits.confdisemprot, dan pam tidak dapat menggunakannya lagi.
steve
Jika Anda menggunakan distribusi menggunakan systemdini adalah solusi IMHO buruk. Ini akan mencegah logindsesi terbuka dan ketika / jika pengguna me-reboot mesin, beberapa proses dimulai karena pengguna tidak akan dihentikan seperti yang diharapkan.
Bigon
Dalam kasus saya, alasannya adalah pengguna Hard Open Fils Limit per prosesor lebih besar dari nr_open. ( nr_opendiatur ulang saat menghidupkan ulang mesin): Anda dapat memeriksa file nr_openby cat /proc/sys/fs/nr_open, dan hard open ulimit -Hn. Jika Anda masih menginginkan pengguna login ssh menggunakan Hard Open File Config, Anda perlu meningkatkan nr_open:sudo sysctl -w fs.nr_open=NUM_BIGGER_THAN_HARD
Xin Meng
4

Saya memiliki masalah yang sama, saya sepertinya hanya melihat pesan aneh berikut:

client_input_channel_req: saluran 0 rtype balasan status keluar 0.

Pengguna yang saya coba ssh menjadi tidak memiliki shell default .

Saya menjalankan yang berikut:

chsh -s $(which sh) username 

Dan kemudian saya bisa ssh.

Catatan:
Menjalankan su usernamemengembalikan kode keluar 1(gagal) dan sekarang hanya berfungsi.

GabLeRoux
sumber
1
Omong kosong itu samar! Ini juga masalah saya. Saya mencoba membuat "sistem" pengguna (tidak ada RUMAH dan tidak ada SHELL) untuk menggunakan SFTP dengan dan saya bisa mengotentikasi tapi saya tidak bisa menggunakan SFTP atau SCP atau SSH. Ini memperbaiki masalah saya. Terima kasih!
Dave
2

Saya telah mengalami ini pada Mac OS X di mana konfigurasi di ~/.bashrcpunya masalah yang menyebabkan sshuntuk bekerja, tetapi sftpuntuk tidak bekerja. @ stéphane-chazelas tampaknya memiliki ide yang tepat dalam komentar di atas.

Pada sistem jarak jauh via SSH, ganti nama ~/.bashrcmenjadi ~/.bashrc-MOVEDdan coba lagi dan lihat apakah itu berfungsi; kemudian kembalikan ~/.bashrcdan tentukan masalahnya.

Di sistem saya yang ~/.bashrcterkandung ini:

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

Yang kemungkinan penyebabnya.

diratakan
sumber
1

Saya memiliki masalah yang sama hari ini. Hal pertama yang saya perhatikan adalah / var / log 100% saya memperbaikinya dan itu tidak menyelesaikan masalah. Saya tidak bisa ssh in dan saya tidak bisa masuk melalui GUI, tapi saya bisa CNTRL + ALT + F2 untuk sampai ke CLI dan masuk dengan cara itu. Saya mengetik startx dan menerima kesalahan bahwa /tmp/.X0-lock ada.

Saya menghapus file itu (secara teknis saya menghapus semuanya dari / tmp) dan saya bisa masuk melalui GUI dan juga melalui ssh.

Jerry P
sumber
Terima kasih! Dalam kasus saya itu /homediisi hingga 100% yang saya deteksi dengan menggunakan df -hpada CentOS 7.
RAM237
1

Saya mengubah konfigurasi Buka file dalam file parameter kernel /etc/security/limits.conf menjadi tidak terbatas dan kehilangan konektivitas.

Setelah mengembalikannya kembali ke normal untuk pengguna root saya mendapatkan konektivitas kembali.

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
sumber