CentOS7无法SSH root登录的排查表:一张清单救回远程权限
CentOS7无法SSH root登录的排查表

远程连不上、密码没错、Ping却通,这种抓狂场景八成落在CentOS7无法SSH root登录身上。把下面这张排查表从头撸到尾,九成九能救回shell。
一、先确认是不是网络背锅
1. Ping测试
本地执行 ping 服务器IP,能通再往下走;不通先查路由、防火墙、云安全组。
2. 端口可达性
telnet 服务器IP 22 或 nc -vz 服务器IP 22,若提示Connection refused,说明sshd没监听或端口被挡。

二、云面板安全组最容易被忽视
阿里云、腾讯云、AWS、华为云,默认把22关得死死的。登录控制台,把入方向TCP 22放行,源地址按需填0.0.0.0/0或固定IP,改完即生效,不用重启系统。
三、本机防火墙firewalld别装睡
执行 firewall-cmd --list-all,没看见22/tcp,就加一条:
firewall-cmd --permanent --add-port=22/tcp && firewall-cmd --reload
若你习惯iptables,记得保存:service iptables save。

四、SELinux偶尔也会拦人
临时关闭验证:setenforce 0,能登录就说明SELinux限制端口,用 semanage port -a -t sshportt -p tcp 22 永久放通,再 setenforce 1 恢复 enforcing。
五、sshd_config里藏着五道锁
1. Port字段
改端口后记得全程同步,云安全组、防火墙、客户端命令一个都不能漏。
2. PermitRootLogin
CentOS7默认是prohibit-password,想拿密码直接登录需改成yes;若只用密钥,保持no更安全。
3. PasswordAuthentication
密码登录必须yes,密钥登录可忽略。
4. PubkeyAuthentication
密钥登录要开yes,同时确认 AuthorizedKeysFile .ssh/authorized_keys 路径存在且权限600。
5. AllowUsers、DenyUsers
这俩字段一旦写错,root直接被踢,注释掉或把root加进AllowUsers。
每改一次配置就 systemctl restart sshd,别嫌麻烦。
六、账户本身是否被锁
passwd -S root 看到LK字样代表锁定,passwd -u root 解锁;
chage -l root 检查密码过期,chage -M 99999 root 把有效期拉到最大。
七、文件权限一错全完
/home/root、/root、.ssh、authorized_keys 逐级权限必须是 700、700、700、600,任何一级组写权限sshd都直接拒。
八、PAM模块暗中使绊子
查看 /etc/pam.d/sshd 里有没有 pamsucceedif.so uid >= 1000 这类规则,root的uid=0会被挡,注释或调整判断值。
九、审计日志是定位神器
tail -f /var/log/secure 实时刷,Authentication failure、User not allowed、Connection closed 都能对应上面哪一步出错,比盲猜快十倍。
十、救急方案:控制台单用户模式
云主机用VNC或控制台,重启进GRUB,选中内核按e,把ro改成rw init=/bin/bash,Ctrl+x进入单用户,直接修改sshd_config、关防火墙、清SELinux,重启即可。
十一、一键核对清单(复制即用)
1. 云安全组放行22
2. firewalld放行22
3. SELinux放行22
4. sshd_config:Port 22、PermitRootLogin yes、PasswordAuthentication yes
5. systemctl restart sshd
6. 权限700/600
7. 账户未锁定、密码未过期
8. tail /var/log/secure 无报错
按表打钩,CentOS7无法SSH root登录基本秒解;再连不上,把日志贴出来,对照上面九条,准能揪出元凶。
