问题现象
远程连接Linux云主机报错:Permission denied
图 Permission denied
说明
修改此问题需要重启进入救援模式,请评估风险后进行操作。
本节操作涉及云主机重启操作,可能会导致业务中断,请谨慎操作。
根因分析
/etc/security/limits.conf中的nofile 用来设置系统允许打开的最大文件数目,如果nofile值大于PermissionDenied.png内核设置的fs.nr_open参数值(默认为1048576),会导致登录校验错误,导致登录云主机时提示“Permission denied”。
处理方法
1.进入云主机的单用户模式。
以CentOS 7操作系统为例:
a.重启云主机,单击“远程登录”。
b.按上方向键,阻止系统自动继续,在出现内核选项时按字母键e进入内核编辑模式。
图 进入内核编辑模式
说明Euler镜像默认对grub文件进行了加密,进入编辑内核模式时会提示:Enter username,需要输入用户和密码,请联系客服获取。
c.找到linux16行末尾,删除不需要加载的参数到ro参数。
d.修改ro为rw,以读写方式挂载根分区。
e.并添加rd.break,然后执行Ctrl+X。
图 修改前
图 修改后
f.执行以下命令切换至/sysroot目录。
chroot /sysroot
2.执行以下命令,查询内核的fs.nr_open值。
sysctl fs.nr_open
3.编辑 /etc/security/limits.conf,修改配置的nofile值为合理的值,需小于2中查询的fs.nr_open值,例如65535。
vi /etc/security/limits.conf
说明limits.conf 文件实际是Linux PAM(插入式认证模块,Pluggable Authentication Modules)中pam_limits.so 的配置文件。更多详细配置信息请查看man手册,执行:man limits.conf
4.重启服务器,重试连接云主机。