分析升级 OpenSSH后 Linux open files配置不生效问题

1.现象

Elasticsearch、Hadoop和 MongoDB等都需要修改 Linux里面最大打开文件数这个配置,即下面的 open files

[root@localhost opt]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 515003
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 515003
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

常规修改 open files只需要在 /etc/security/limits.conf文件里面添加如下配置:

*       hard    nofile   65536
*       soft    nofile   65536

笔者的环境出于安全性考虑将 openssh由 [OpenSSH_7.4p1, OpenSSL 1.0.2k-fips]升级到了 [OpenSSH_8.8p1, OpenSSL 1.1.1m],这个时候问题就来了,明明已经将 open files修改为 65536了,但是无论是使用 ulimit -a还是 ulimit -n命令均显示的默认值 1024

笔者服务器版本:CentOS Linux release 7.9.2009 (Core)

2.分析

SSH一般都是用于连接远程服务器或者远程服务器之间通讯的,为何为影响到 Linux系统的配置项呢?如果能影响,那么决定 open files这个配置项的值的因素有哪些呢

网上的大部分文章都只提到了使用 ulimit命令或者修改 limits.conf文件来实现修改 open files配置,但是通过细心查看发现 PAM可能跟这个配置项也有关。

PAM,Pluggable Authentication Modules,可插拔认证模块。简而言之,一种高层次的统一安全认证机制。

再查阅资料后发现,openssh也是支持 PAM的。

3.解决

第一步,修改 openssh配置文件,开启对 PAM的支持:

vim /etc/ssh/sshd_config
在文件末尾添加:UsePAM yes

第二步,重启 ssd服务:

systemctl restart sshd

第三步,验证结果:

[root@localhost opt]# ulimit -n
65536

备注:笔者的环境此时出现了 root用户无法远程连接服务器的问题,解决办法见 解决 OpenSSH开启 PAM后 root用户无法远程登录问题

猜你喜欢

转载自blog.csdn.net/Daphnisz/article/details/124079757