问题
内核参数设置完如下操作后,ssh就无法登录了
net.core.somaxconn = 65535
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1
fs.file-max = 1048576
fs.nr_open = 1000000
登录情况:
login as: root
root@10.10.57.107's password:
┌──────────────────────────────────────────────────────────────────────┐
│ • MobaXterm Professional Edition v21.5 • │
│ (SSH client, X server and network tools) │
│ │
│ ➤ SSH session to root@10.10.57.107 │
│ • Direct SSH : ✔ │
│ • SSH compression : ✔ │
│ • SSH-browser : ✔ │
│ • X11-forwarding : ✘ (disabled or not supported by server) │
│ │
│ ➤ For more info, ctrl+click on help or visit our website. │
└──────────────────────────────────────────────────────────────────────┘
Last failed login: Tue Jan 10 16:43:33 CST 2023 from 10.11.18.82 on ssh:notty
There were 2 failed login attempts since the last successful login.
Last login: Tue Jan 10 16:25:52 2023 from wjl-sh40411711.opple.com
┌────────────────────────────────────────────────────────────────────┐
│ • Waiting for the pending transfer to complete... • │
└────────────────────────────────────────────────────────────────────┘
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Session stopped
- Press <return> to exit tab
- Press R to restart session
- Press S to save terminal output to file
查找
从上面可以看出,我是登录成功了的,但是马上就退出了。
一开始以为是配置 docker 导致问题。从这个方向去查找,百度到一个答案
/etc/ssh/sshd_config 中的UsePAM yes 改成no
因为现在ssh已经登录不了了,启动linux的单用户模式
(这个大家可以百度一下,Linux版本不同,对应的方式不同,我这里展示的centos7的)
- 出现如下页面后,按e
- 找到linux16这一行,然后 把ro改成rw,最后面添加init=/sysroot/bin/sh
- 然后ctrl+x就进入单用户页面了。这个时候执行chroot /sysroot切换到系统用户。
因为系统目录挂载都是根目录,所以看不了/var/log下面的东西。那就尝试修改一下/etc/ssh/sshd_config 中的UsePAM yes 改成no。发现启动成功了。
进去系统,查看日志:/var/log/secure
…………
Jan 10 15:50:01 localhost crond[16739]: pam_limits(crond:session): Could not set limit for 'nofile': Operation not permitted
Jan 10 16:00:01 localhost crond[26510]: pam_limits(crond:session): Could not set limit for 'nofile': Operation not permitted
…………
可以看到有报错:Could not set limit for ‘nofile’: Operation not permitted
nofile是/etc/security/limits.conf 这个文件里面配置的。
查看/etc/security/limits.conf
[root@localhost ~]# cat /etc/security/limits.conf
* soft nofile 1048576
* hard nofile 1048576
* soft nproc 655350
* hard nproc 655350
百度出来 nofile由内核参数nr_open定义的。意思是nofile和nr_open是一个东西哇。怀疑是不是内核设置了一边最大文件打开数,然后limits里面又被定义了,所以ssh启动有问题了呢? 那我把fs.nr_open = 1000000 这个删除掉是不是就可以了哦。
删除了,然后把sshd.conf 重新改成 UsePAM yes ,重新启动,可以了!!