centos7 openfiles问题

本文介绍了在CentOS 7环境中,由于PAM配置导致UID小于1000的用户(如root)无法通过SSH登录的问题。问题表现为即使输入正确密码也无法登录,并在secure日志中出现相关错误。解决方法包括检查和修改/etc/pam.d/login文件中的pam_succeed_if.so配置,解除对UID的限制,以便恢复root和其他低UID用户的登录能力。
摘要由CSDN通过智能技术生成

集群环境有几台新增的机器,尝试修改open files的时候,按照平常的操作就是修改/etc/security/limits.conf和/etc/security/limits.d/90-nproc.conf使得重启后永久生效,然后执行ulimit -n 65536这种使得当前生效。这样大多数情况是OK的,但是这里要注意有坑,首先是否真正的生效,需要通过其他机器直接ssh username@ip来直接登录到修改的服务器的username用户下,然后执行ulimit -a查看是否正常。不能直接先在root权限下,通过su命令切换到普通用户下查看,这种查看效果看起来是生效了,但是实际上是使用的root用户的配置,不是mmtrix的配置。所以要在其它服务器上直接通过ssh登录普通用户查看。
  本人遇到的问题是,对于CentOS6.5直接依据上述操作修改正常,但是刚好新增的几台机器系统版本号不一样,这也是坑。。。然后有一台是CentOS 7.4,通过上述方法改完后并没有什么卵用,经google查阅文档了解对于CentOS部分版本,关于各种系统限制和PAM存在冲突,从而导致修改失败。问题排查步骤如下:
  首先要查看系统整体对每个用户设置的文件句柄的最大限制:cat /proc/sys/fs/file-max,这个值要大于我们需要设置的值,否则配置是无效的。修改这个值的方式:

vim /etc/sysctl.con

#新增一行
fs.file-max = 100000
1
2
3
4
  修改完毕后执行sysctl -p即可成功修改。这里确定没问题后,再修改pam的配置文件,
具体就是编辑/etc/pam.d/login文件,新增一行:session required pam_limits.so内容。这些配置完毕后再重新登录到普通用户查看,如果还是发现open files未修改成功,那么就需要进行下一步修改ssh的配置,编辑/etc/ssh/sshd_config配置文件,配置UsePrivilegeSeparation no和UsePAM no,然后通过service sshd restart重启sshd服务,再重新ssh登录普通用户,这时执行ulimt -a发现配置已经生效了。
  针对以上问题,如果未修改成功,还有一个现象供参考是普通用户执行ulimit -n xxx的时候,一般由于配置未生效,如果配置的值过大会提示

-bash: ulimit: open files: cannot modify limit: Operation not permitted
1
  即虽然改了limits.conf相关配置文件,但是发现修改的允许范围值还是很小,此时按照以上步骤本人集群机器上问题已经解决。

 

最后定位为openssh配置问题,附openssh详解

 

    1. 名称
    2.  
           sshd_config - OpenSSH SSH 服务器守护进程配置文件
    3.  
       
    4.  
       
    5.  
      大纲
    6.  
           /etc/ssh/sshd_config
    7.  
       
    8.  
       
    9.  
      描述
    10.  
           sshd( 8) 默认从 /etc/ssh/sshd_config 文件(或通过 -f 命令行选项指定的文件)读取配置信息。
    11.  
           配置文件是由 "指令 值"对组成的,每行一个。空行和以'#'开头的行都将被忽略。
    12.  
           如果值中含有空白符或者其他特殊符号,那么可以通过在两边加上双引号( ")进行界定。
    13.  
           [注意]值是大小写敏感的,但指令是大小写无关的。
    14.  
       
    15.  
       
    16.  
           当前所有可以使用的配置指令如下:
    17.  
       
    18.  
       
    19.  
           AcceptEnv
    20.  
                   指定客户端发送的哪些环境变量将会被传递到会话环境中。[注意]只有SSH-2协议支持环境变量的传递。
    21.  
                   细节可以参考 ssh_config(5) 中的 SendEnv 配置指令。
    22.  
                   指令的值是空格分隔的变量名列表(其中可以使用'*'和'?'作为通配符)。也可以使用多个 AcceptEnv 达到同样的目的。
    23.  
                   需要注意的是,有些环境变量可能会被用于绕过禁止用户使用的环境变量。由于这个原因,该指令应当小心使用。
    24.  
                   默认是不传递任何环境变量。
    25.  
       
    26.  
       
    27.  
           AddressFamily
    28.  
                   指定 sshd(8) 应当使用哪种地址族。取值范围是:"any"(默认)、"inet"(仅IPv4)、"inet6"(仅IPv6)。
    29.  
       
    30.  
       
    31.  
           AllowGroups
    32.  
                   这个指令后面跟着一串用空格分隔的组名列表(其中可以使用"*"和"?"通配符)。默认允许所有组登录。
    33.  
                   如果使用了这个指令,那么将仅允许这些组中的成员登录,而拒绝其它所有组。
    34.  
                   这里的"组"是指"主组"(primary group),也就是/etc/passwd文件中指定的组。
    35.  
                   这里只允许使用组的名字而不允许使用GID。相关的 allow/deny 指令按照下列顺序处理:
    36.  
                   DenyUsers, AllowUsers, DenyGroups, AllowGroups
    37.  
       
    38.  
       
    39.  
           AllowTcpForwarding
    40.  
                   是否允许TCP转发,默认值为"yes"。
    41.  
                   禁止TCP转发并不能增强安全性,除非禁止了用户对shell的访问,因为用户可以安装他们自己的转发器
    42.  
       
    43.  
       
    44.  
           AllowUsers
    45.  
                   这个指令后面跟着一串用空格分隔的用户名列表(其中可以使用"*"和"?"通配符)。默认允许所有用户登录。
    46.  
                   如果使用了这个指令,那么将仅允许这些用户登录,而拒绝其它所有用户。
    47.  
                   如果指定了 USER@HOST 模式的用户,那么 USER 和 HOST 将同时被检查。
    48.  
                   这里只允许使用用户的名字而不允许使用UID。相关的 allow/deny 指令按照下列顺序处理:
    49.  
                   DenyUsers, AllowUsers, DenyGroups, AllowGroups
    50.  
       
    51.  
       
    52.  
           AuthorizedKeysFile
    53.  
                   存放该用户可以用来登录的 RSA/DSA 公钥。
    54.  
                   该指令中可以使用下列根据连接时的实际情况进行展开的符号:
    55.  
                   %% 表示'%'、%h 表示用户的主目录、%u 表示该用户的用户名。
    56.  
                   经过扩展之后的值必须要么是绝对路径,要么是相对于用户主目录的相对路径。
    57.  
                   默认值是".ssh/authorized_keys"。
    58.  
       
    59.  
       
    60.  
           Banner
    61.  
                   将这个指令指定的文件中的内容在用户进行认证前显示给远程用户。
    62.  
                   这个特性仅能用于SSH-2,默认什么内容也不显示。"none"表示禁用这个特性。
    63.  
       
    64.  
       
    65.  
           ChallengeResponseAuthentication
    66.  
                   是否允许质疑-应答(challenge-response)认证。默认值是"yes"。
    67.  
                   所有 login.conf(5) 中允许的认证方式都被支持。
    68.  
       
    69.  
       
    70.  
           Ciphers
    71.  
                   指定SSH-2允许使用的加密算法。多个算法之间使用逗号分隔。可以使用的算法如下:
    72.  
                   "aes128-cbc", "aes192-cbc", "aes256-cbc", "aes128-ctr", "aes192-ctr", "aes256-ctr",
    73.  
                   "3des-cbc", "arcfour128", "arcfour256
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值