无法 ssh,连接立即终止,退出状态为 254

无法 ssh,连接立即终止,退出状态为 254

我记得的最近一件事是将软硬内存锁 ulimit 更改为无限制。现在我无法 ssh 进入机器。

这是 ssh 日志。

Authenticated to IP ([IP]:22).
debug1: channel 0: new [client-session]
debug2: channel 0: send open
debug1: Requesting [email protected]
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 [email protected] 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. 强制 ttyssh -t user@host

  3. 移动了 bash_profile。尝试通过 ssh 进行ssh user@host.

  4. 重命名该limits.conf文件,希望它不会被读取。

  5. 重新启动 ssh 服务器。

  6. knife通过as运行命令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 进入服务器吗?

答案1

尝试改变

UsePAM yes

UsePAM no

/etc/ssh/sshd_config(对于 CentOS)

答案2

我遇到了类似的问题,我似乎只看到以下奇怪的消息:

client_input_channel_req: channel 0 rtype exit-status reply 0.

我试图ssh进入的用户没有默认的 shell

我运行了以下命令:

chsh -s $(which sh) username 

然后我就能够了ssh

笔记:

运行su username返回退出代码1(失败),现在它可以正常工作了。

答案3

我将内核参数文件 /etc/security/limits.conf 中的打开文件配置更改为无限制,并失去了连接。

将其恢复为 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

答案4

我遇到过这个Mac OS X其中的配置~/.bashrc有问题导致ssh工作,sftp但是不是工作。 @stéphane-chazelas 在上面的评论中似乎有正确的想法。

在通过 SSH 的远程系统上,重命名~/.bashrc~/.bashrc-MOVED并重试,看看是否有效;然后恢复~/.bashrc并确定问题。

在我的系统上~/.bashrc包含以下内容:

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

这可能是罪魁祸首。

相关内容