背景
新服务器上架,考虑安全原因需要修改端口。将SSH默认22端口修改成8888端口。
目的
提供修改SSH端口,重启失败解决方法;提供发现问题后解决问题思路;积累工作经验,提升个人能力
场景还原
能到修改sshd端口这一步肯定SSH都有按照服务,这里省略安装SSH步骤。
1.修改ssh配置文件
[root@bogon ~]# vi /etc/ssh/sshd_config
进入之后按i进入编辑模式,注释掉默认端口信息,在下面将Port 修改成8888。按esc键退出编辑模式,”:wq“保存或者”:wq!”强制保存。
2.按照正常的流程要重启SSH服务。
[root@bogon ~]# systemctl restart sshd
之后开始报错,提示查看sshd服务状态或者查看日志。
3. sshd服务状态
目前我还看不懂写的什么意思,继续往下看日志显示信息
4.查看日志
[root@bogon ~]# journalctl -xe
日志中“SELinux is preventing /usr/sbin/sshd from name_bind access on the tcp_socket port“信息最为瞩目,但还是看不懂,使用AI大模型进行解释
SELinux是强制访问控制策略,具体的可以问问AI了解一下。我还在学习中。
下面是解决重启失败的解决方法
解决方法1
通过日志我们发现是SELinux阻止了端口的修改。
1.临时禁止SELinux策略
[root@bogon ~]# setenforce 0
这时候重启ssh服务将不在报错。服务器每次重启,都需要禁止,不然SSH登录不上。
2.查看ssh运行状态。
查看ssh运行状态,确保ssh运行正常
[root@bogon ~]# systemctl status sshd
3.永久禁止SELinux
修改 /etc/selinux/config 并设置 SELINUX=disabled。
[root@bogon ~]# vi /etc/selinux/config
注释原来的配置信息,在下方输入新配置。保存,重启服务器生效。
4.查看SELinux状态
[root@bogon ~]# sestatus
重启后还要查看一下SELinux状态。显示disabled关闭成功
解决方法2
不禁止SELinux规则,在原有的基础上进行修改。
1.搜索SELinux当前ssh的规则
[root@bogon ~]# semanage port -l | grep ssh
我们看到ssh服务名称,ssh_port_t,端口只允许了22端口
2.修改端口
[root@bogon ~]# semanage port -a -t ssh_port_t -p tcp 8888
-a选项用于添加新的允许规则,-p选项用于指定协议类型(在此为TCP或UDP),-h选项用于指定主机名,-s选项用于指定服务名称,<port number>是要添加的端口号
3.查看ssh新增端口是否成功
[root@bogon ~]# semanage port -l | grep ssh
4.删除端口
[root@bogon ~]# semanage port -d -t ssh_port_t -p tcp 8888
-d参数是删除端口
将-a替换成-m是修改的意思,将22端口直接变成8888端口。
总结
总结问题:
SSH重启失败的原因是因为被SELinux策略阻止了。本文章提供两种方法,第一种方法临时或者永久停止SELinux服务;第二种方法在原有的SELinux服务上添加新规则。
命令使用总结
修改sshd配置文件
[root@bogon ~]# vi /etc/ssh/sshd_config
重启sshd服务
[root@bogon ~]# systemctl restart sshd
查看sshd服务状态
[root@bogon ~]# systemctl status sshd
查看日志
[root@bogon ~]# journalctl -xe
临时禁止SELinux策略
[root@bogon ~]# setenforce 0
永久禁止SELinux
修改 /etc/selinux/config 并设置 SELINUX=disabled。
[root@bogon ~]# vi /etc/selinux/config
搜索SELinux规则
[root@bogon ~]# semanage port -l | grep ssh
在SELinux新增端口
[root@bogon ~]# semanage port -a -t ssh_port_t -p tcp 8888