文档

使用SSH远程连接Linux系统的ECS实例时,提示“could not set limit for ‘nofile’: Operation not permitted”错误怎么办?

更新时间:

本文使用SSH远程连接Linux系统的ECS实例时,提示“could not set limit for ‘nofile’: Operation not permitted”错误的原因和解决方案。

问题现象

使用SSH远程连接Linux系统的ECS实例时,提示以下错误信息。

-bash: fork: retry: Resource temporarily unavailable.
pam_limits(sshd:session):could not sent limit for 'nofile':operaton not permitted.
Permission denied.

问题原因

该问题可能是Linux内核中资源限制配置文件/etc/security/limits.confnofile值过大,超过内核可打开的文件数,导致无法使用SSH连接ECS实例。

解决方案

您可以根据业务需要,修改/etc/sysctl.conf/etc/security/limits.conf配置文件以解决此问题。

  1. 以VNC方式远程连接ECS实例。

    具体操作,请参见连接方式概述

  2. 分别执行如下命令,查看fs.file-maxfs.nr_open参数值。

    • fs.file-maxfs.nr_open参数值小于65536,建议您继续步骤3

    • fs.file-maxfs.nr_open参数值大于65536,建议您执行步骤4

      cat /proc/sys/fs/file-max 
      cat /proc/sys/fs/nr_open 
  3. 修改/etc/sysctl.conf配置文件。

    1. 打开/etc/sysctl.conf配置文件。

      vim /etc/sysctl.conf
    2. i键进入编辑模式。

    3. 修改fs.file-maxfs.nr_open参数值。

      建议将fs.file-maxfs.nr_open参数值都修改为大于65536。

        说明
        • fs.file-max:系统内核级别所有进程可打开的文件数。

        • fs.nr_open:系统内核级别单个进程可打开的文件数。

      fs.file-max = 655360
      fs.nr_open = 655360
  4. 修改/etc/security/limits.conf配置文件。

    1. 打开/etc/security/limits.conf配置文件。

      vim /etc/security/limits.conf
    2. i键进入编辑模式。

    3. 修改* soft nofile* hard nofile参数值。

      例如,将* soft nofile* hard nofile参数值都修改为大于65535。

      * soft nofile 655350
      * hard nofile 655350
  5. 重启ECS实例。

    具体操作,请参见启动实例

  6. 依次执行以下命令,确认fs.file-maxfs.nr_open值修改成功。

    cat /proc/sys/fs/file-max
    cat /proc/sys/fs/nr_open

相关文档

无法连接Linux实例的排查方法