执行firewall-cmd --reload后SSH连接中断,无法接入新服务器求助
解决
firewall-cmd --reload后SSH无法连接的问题 嘿,这个问题我碰到过好多次了——执行firewall-cmd --reload后突然断连,还弹出"Network Error: Software caused connection abort"(应该是你输入时的小失误,正确错误提示是这个),核心原因基本都是重载后的防火墙规则没开放SSH服务端口,直接把你的远程连接给切断了。下面是具体的排查和修复步骤:
紧急恢复(优先操作)
如果你能直接接触服务器,或者有云服务商提供的控制台/VNC权限,先登录进去执行:
- 永久开放SSH服务并重载规则(这是最稳妥的方式):
firewall-cmd --add-service=ssh --zone=public --permanent firewall-cmd --reload - 要是着急恢复连接,也可以临时关闭防火墙(仅限紧急情况,之后一定要重新配置规则):
systemctl stop firewalld
为啥会出现这个问题?
一般逃不开这两种情况:
- 之前加的SSH规则是临时生效的(没加
--permanent参数),重载防火墙后临时规则被清空,端口自然就被封了。 - 修改防火墙配置时,不小心改了默认zone,或者误删了允许SSH的规则,导致重载后规则失效。
后续避免踩坑的建议
为了下次不再掉坑里,修改防火墙规则时记住这几点:
- 任何需要长期保留的规则,一定要加上
--permanent参数,不然重启/重载后就没了。 - 修改前先检查当前生效的规则,确认SSH服务是否在允许列表里:
看输出里有没有firewall-cmd --list-all --zone=publicservices: ssh这一项,没有就赶紧加永久规则。 - 不确定规则是否正确时,可以先不加
--permanent测试,没问题再永久保存并重载:# 临时添加规则测试 firewall-cmd --add-service=ssh --zone=public # 测试连接正常后,永久保存 firewall-cmd --add-service=ssh --zone=public --permanent firewall-cmd --reload
特殊情况:没有控制台权限怎么办?
如果是云服务器,先去云平台的安全组看看有没有开放22端口——有些服务商的安全组和系统防火墙是独立的,要是安全组没问题,那只能联系服务商帮忙进入救援模式修复系统防火墙了。
内容的提问来源于stack exchange,提问作者JunM
相关产品推荐
相关产品推荐

