SSH登录失败、修改端口重启失败

背景

新服务器上架,考虑安全原因需要修改端口。将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

  • 19
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用中的错误信息"ssh: connect to host namenode1 port 22: Connection refused",这个错误表示连接被拒绝,可能是因为目标主机的SSH服务未启动或未监听在22端口。为了解决这个问题,可以按照引用中的步骤进行操作。 首先,确保你已经生成了SSH密钥对,并且在目标主机和从机上执行了ssh-copy-id命令。检查主机操作和从机操作是否正确执行,并且确保指定的主机名和端口号是正确的。 如果你已经确认上述操作正确无误,而仍然无法连接,那么可能是由于其他问题导致连接被拒绝。你可以尝试以下步骤来解决问题: 1. 检查目标主机的防火墙设置,确保22端口是开放的。你可以使用以下命令检查: ``` sudo ufw status ``` 2. 检查目标主机的SSH配置文件(通常是`/etc/ssh/sshd_config`),确保SSH服务正在监听22端口,并且允许密钥登录。你可以使用以下命令来编辑配置文件: ``` sudo nano /etc/ssh/sshd_config ``` 3. 重启SSH服务以使更改生效: ``` sudo service ssh restart ``` 4. 如果你使用的是特定的安全组或网络策略,确保允许SSH流量通过。 如果你仍然无法解决问题,请检查目标主机的网络连接是否正常,以及目标主机是否正在运行。 请注意,以上步骤是一般的故障排除方法,具体的解决方法可能因环境和配置而有所不同。如果问题仍然存在,建议参考相关文档或向相关技术支持寻求帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值