linux 登录服务器 提示Permission denied 且ssh登录立即退出 Exit status 254

系统版本:CentOS Linux release 7.7.1908 (Core) 内核:4.18.12-1.el7.elrepo.x86_64

1、故障

下午初始化完一台服务器后,登录显示Permission denied,查看一开始以为是密码有问题,进入单用户模式把密码改成123456了,然后重启,登录还是报Permission denied;后来ssh -v IP查看,密码认证环节已通过,系统有种登录后立马退出的现象,因为升级了内核,以为是升级了内核导致的,选择最初的内核版本启动还是报错,郁闷,后来在网上找了一些文档,什么root被禁止啥的,都没解决问题

2、问题确认

后来仔细查看初始化脚本,其中有项设置最大连接数的配置引起注意,值设置为了10240000,然后想这个值是不是不能超出某个认参数的值,然后在单用户模式下把值改为了65536,重启服务器 ,然后就可以登录了,找到问题原因所在,于是去找资料,为啥设置成10240000就不行了呢?后来找到一篇博客,发现 open file(s) kernel 级别有 2 个配置,fs.nr_open,进程级别;fs.file-max,系统级别

fs.nr_open 认设置的上限是 1048576,所以用户的openfile(s) 不可能超过这个上限。

# sysctl -w fs.nr_open=20480000
# ulimit -n 10240000
# ulimit -n
10240000

修改后即可设置更大的 openfile(s) 了。

同样,对于 kernel 参数的修改sysctl 命令修改的是当前运行时,如果需要永久修改, 则将配置添加到 /etc/sysctl.conf 中,例如:

# echo "fs.nr_open = 20480000" >> /etc/sysctl.conf
# echo "fs.file-max = 10000000" >> /etc/sysctl.conf

不过,增大这些值意味着能够打开更多的文件(在 Linux 中,everything is file,包括 socket),但是同时也意味着消耗更多的资源,所以基本上在物理机上才会遇到这种问题

相关文章

在Linux系统中,设置ARP防火墙可以通过多种方法实现,包括使...
在Linux环境下,使用Jack2进行编译时,可以采取以下策略来提...
`getid`命令在Linux系统中用于获取当前进程的有效用户ID(EU...
在Linux环境下,codesign工具用于对代码进行签名,以确保其完...
Linux中的`tr`命令,其英文全称是“transform”,即转换的意...
Linux中的ARP防火墙是一种用于防止ARP欺骗攻击的安全措施,它...