Troubleshoot Linux 1 修改sshd端口重启报错

Troubleshoot: 修改sshd端口号后重启服务报错255

VirtualBoxVM_wYe3UkV9yU.png

把端口从 22 改成了 22222。在 RHEL 10 这样的系统上,最常见的原因是 SELinux 策略 阻止了 sshd 绑定到非标准的端口(默认只允许 22)。

journalctl -xeu sshd.service中也能看到bind to port 2222失败是因为Permission denied

请尝试按以下步骤解决问题:

1. 检查 SSH 配置文件语法

首先,我们来确保你的配置文件 /etc/ssh/sshd_config 没有语法错误。运行:

1
sshd -t
  • 如果这条命令没有任何输出,说明语法正确。
  • 如果有错误提示,请根据提示修改 /etc/ssh/sshd_config 文件中的错误。

更新 SELinux 策略

如果语法正确,那么几乎可以肯定是 SELinux 问题。你需要告诉 SELinux 允许 sshd 使用 22222 端口。

a. 使用semanage添加新的端口策略
运行以下命令,将 22222 端口的 SELinux 上下文标记为 ssh_port_t 类型:

1
sudo semanage port -a -t ssh_port_t -p tcp 22222
  • -a 是添加 (add)
  • -t 是类型 (type)
  • -p 是协议 (protocol)

3. 重新启动 sshd 服务

更新 SELinux 策略后,再次尝试启动 sshd

1
sudo systemctl restart sshd

然后马上检查它的状态:

1
sudo systemctl status sshd

如果 Active: 行显示 active (running),那么恭喜你,问题解决了!

VirtualBoxVM_XGvE3P2U58.png


⚠️ 重要提醒:更新防火墙

在你确认 sshd 服务成功运行后,千万别忘了firewalld 防火墙上放行你的新端口 22222,否则你将无法从外部连接到这台机器:

1
2
3
4
5
# 永久添加 22222/tcp 端口到防火墙规则
sudo firewall-cmd --permanent --add-port=22222/tcp

# 重新加载防火墙规则使之生效
sudo firewall-cmd --reload

VirtualBoxVM_wXgQWSylXx.png