Không thể ssh, kết nối chấm dứt ngay lập tức với trạng thái thoát 254


12

Điều gần đây nhất mà tôi nhớ là thay đổi ulimit mềm và cứng thành không giới hạn. Bây giờ tôi không thể ssh vào máy.

Đây là nhật ký 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

Tôi đã thử những điều sau đây không thành công cho đến bây giờ, trước khi đăng ở đây:

  1. Đang cố gắng đăng nhập norc noprofile bằng cách ssh user@host 'bash --noprofile'

  2. Buộc một tty bằng ssh -t user@host

  3. Đã di chuyển bash_profile. Đã thử sshing bởi ssh user@host.

  4. Đổi tên limits.conftập tin với hy vọng nó sẽ không được đọc.

  5. Khởi động lại máy chủ ssh.

  6. Chạy một lệnh thông qua knifenhư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'

Tôi không chắc chắn nếu cách chạy lệnh nội tuyến này: ssh user@host "some_command"hoạt động, bởi vì tôi không thể có được một danh sách thư mục đơn giản. Tôi cũng đã thử khởi động lại bằng cách ssh user@host 'reboot'nhưng không nghĩ lệnh đã được thực thi. Tôi cũng khởi động lại máy từ AWS, nhưng không thành công.

Có phải là một nguyên nhân bị mất cố gắng để ssh? Có cách nào tôi có thể ssh vào máy chủ không?


1
Nếu shell đăng nhập của người dùng từ xa là bash, thì bash luôn đọc ~ / .bashrc trên ssh. Không có cách nào khác. Bạn có thể sftp ở đó và kiểm tra / thay đổi bashrc của bạn theo cách đó?
Stéphane Chazelas

Đã thử sftp bằng CyberDuck, nhận được SSH_FXP_INITmã lỗi.
theTuxRacer

Bạn cũng có thể nhận được đầu ra chi tiết hơn bằng cách sử dụng -vtùy chọn hoặc để biết thêm, -vvtùy chọn thậm chí nhiều hơn, sau đó -vvvtùy chọn. Ví dụ ssh -vvv user@host. Điều đó có thể cho bạn một ý tưởng tốt hơn về nơi mọi thứ đang đi sai.
Warwick

Đã thử mà. Đây là nơi tôi đã nhận được nhật ký.
theTuxRacer

Bạn có bất kỳ tệp nào khác (FTP / HTTP ...?) Hoặc shell (console?) Vào máy mà bạn có thể sử dụng không?
Stéphane Chazelas

Câu trả lời:


12

Cố gắng thay đổi

UsePAM yes

trên

UsePAM no

trong /etc/ssh/sshd_config(cho CentOS)


Nó hoạt động, nhưng tại sao?
FelikZ 7/07/2015

1
xin lỗi, nhưng tôi không nhớ lý do)
frad sorvensen

Có phải Selinux đang chơi ở đây không? Tự hỏi nếu bối cảnh của /etc/security/limits.confhosed, và pam không thể sử dụng nó nữa.
steve

Nếu bạn đang sử dụng một bản phân phối sử dụng systemdthì đây là một giải pháp tồi IMHO. Điều này sẽ ngăn logindmở phiên và khi / nếu người dùng khởi động lại máy, một số quy trình bắt đầu vì người dùng sẽ không bị dừng như mong đợi.
Bigon

Trong trường hợp của tôi, lý do là người dùng Hard Open Fils Giới hạn cho mỗi bộ xử lý lớn hơn nr_open. ( nr_openđược đặt lại khi khởi động lại máy): bạn có thể kiểm tra nr_openbằng cat /proc/sys/fs/nr_openvà mở các tệp cứng ulimit -Hn. Nếu bạn vẫn muốn người dùng đăng nhập ssh sử dụng Cấu hình tệp mở cứng, bạn cần tăng nr_open:sudo sysctl -w fs.nr_open=NUM_BIGGER_THAN_HARD
Xin Meng

4

Tôi gặp vấn đề tương tự, dường như tôi chỉ thấy tin nhắn lạ sau:

client_input_channel_Vq: kênh 0 rtype thoát trạng thái trả lời 0.

Người dùng tôi đã cố gắng ssh vào không có vỏ mặc định .

Tôi đã chạy như sau:

chsh -s $(which sh) username 

Và sau đó tôi đã có thể ssh.

Lưu ý:
Chạy su usernameđã trả về mã thoát 1(không thành công) và bây giờ nó chỉ hoạt động.


1
Holy crap đó là khó hiểu! Đây là vấn đề của tôi là tốt. Tôi đã thử tạo một người dùng "hệ thống" (không có HOME và không SHELL) để sử dụng SFTP và tôi có thể xác thực nhưng tôi không thể sử dụng SFTP hoặc SCP hoặc SSH. Điều này đã khắc phục vấn đề của tôi. Cảm ơn!
Dave

2

Tôi đã gặp phải điều này trên Mac OS X mà cấu hình trong ~/.bashrccó một vấn đề mà gây ra sshđể làm việc, nhưng sftpđể không làm việc. @ stéphane-chazelas dường như có ý tưởng đúng trong các ý kiến ​​trên.

Trên hệ thống từ xa thông qua SSH, đổi tên ~/.bashrcthành ~/.bashrc-MOVEDvà thử lại và xem nó có hoạt động không; sau đó khôi phục ~/.bashrcvà xác định vấn đề.

Trên hệ thống của tôi ~/.bashrccó chứa điều này:

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

Đó là thủ phạm có khả năng.


1

Tôi đã có cùng một vấn đề ngày hôm nay. Điều đầu tiên tôi nhận thấy là / var / log là 100% tôi đã sửa nó và nó không giải quyết được vấn đề. Tôi không thể đăng nhập thông qua GUI, nhưng tôi có thể CNTRL + ALT + F2 để truy cập CLI và đăng nhập theo cách đó. Tôi đã gõ startx và nhận được lỗi tồn tại /tmp/.X0-lock.

Tôi đã xóa tệp đó (về mặt kỹ thuật tôi đã xóa mọi thứ khỏi / tmp) và tôi đã có thể đăng nhập qua GUI và cũng qua ssh.


Cảm ơn! Trong trường hợp của tôi, nó đã được /homelấp đầy tới 100% mà tôi đã phát hiện bằng cách sử dụng df -htrên CentOS 7.
RAM237

1

Tôi đã thay đổi cấu hình tệp Mở trong tệp tham số kernel /etc/security/limits.conf thành không giới hạn và mất kết nối.

Sau khi hoàn nguyên nó trở lại bình thường cho người dùng root, tôi đã lấy lại được kết nối.

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.