Selinux导致远程ssh连接服务器失败

老谢的自留地 2020-03-25

一、服务器环境

dell物理服务器R620
系统如下:

[ ~]# cat /etc/redhat-release 
CentOS Linux release 7.7.1908 (Core)

[ ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core)

二、本博文主题内容

2.1 初始化系统时优化服务器安全参数并且修改了ssh登录服务器端口后 reboot重启服务器 居然不能ssh远程登录服务器, 排除服务器iptables或者firewalld防火墙的问题。那是什么问题导致的呢??
主要是服务器系统selinux没有被disabled 或者Permissive 禁用掉,导致重启服务器时,sshd服务启动失败。

2.2 那在centos7系列的系统中 如何禁用掉selinux呢?

2种方式:

第一种是命令行设置setenforce 0

setenforce 0 这个是临时禁用,重启服务器时就失效了, 而且需要特别注意的是: 在centos7的系统中如果只是简单是命令行setenforce 0 来禁用selinux,并没有修改/etc/sysconfig/selinux中的
SELINUX=disabled 话,(sshd服务在centos7系统中默认就是开机自启动)修改了sshd的配置文件,此时服务器reboot重启时,导致sshd服务启动失败,导致不能远程ssh登录服务器。

第二种就是直接修改/etc/sysconfig/selinux 配置文件中SELINUX=disabled 修改完sshd配置文件参数,然后reboot重启服务器即可ssh远程登录了

但是任然遇到一个问题,我修改了/etc/sysconfig/selinux 配置文件中SELINUX=disabled reboot重启服务器后,始终不能ssh远程登录服务器,只能让IDC机房值班的同事通过显示器连接服务器进入系统
setenforce 0 关闭selinux,然后重启sshd就可以了。

2.3 排查故障原因:

出于好奇,比对了下其他正常的服务器,发现问题所在了

查看正常的服务器发现:
[ scripts]# ll /etc/sysconfig/selinux
lrwxrwxrwx. 1 root root 17 Mar 21 04:59 /etc/sysconfig/selinux -> ../selinux/config

在centos7 x86_64位最小化系统中默认 /etc/sysconfig/selinux 这个文件原来是 /etc/selinux/config 这个文件的软连接(相当于windows系统的文件的快捷方式)
修改/etc/sysconfig/selinux 这个文件,同时/etc/selinux/config这个文件也会被修改。 重启服务器时,加载的是/etc/selinux/config 这个文件来关闭selinux

但是我这台物理机是给开发测试用的,他们那边都有服务器权限,不知什么时候这帮开发把/etc/selinux/config 这个文件的软连接给删掉了,并且cp /etc/selinux/config 到/etc/sysconfig/selinux
并且这2个文件里面的内容都还是最初的。也就是/etc/selinux/config 这个文件中的SELINUX=Enforcing 然而修改 /etc/sysconfig/selinux 中的SELINUX=disabled 并不会同时修改/etc/selinux/config 内容

因为/etc/selinux/config 这个文件的软连接早已经被开发给删掉了。并且服务器重启只会加载/etc/selinux/config 这个文件
所以修改完sshd服务的配置文件,在重启服务器时,sshd服务启动失败,就不会ssh远程登录服务器

于是重新创建软连接

ln -s /etc/selinux/config /etc/sysconfig/selinux
[ ~]# ll /etc/sysconfig/selinux 
lrwxrwxrwx. 1 root root 19 3月  23 14:07 /etc/sysconfig/selinux -> /etc/selinux/config

重启服务器OK了

相关推荐