CentOS 7开启防火墙后SSH(22端口)无法连接,通常是因为防火墙默认拦截了入站流量,解决方法是使用firewall-cmd命令永久开放SSH端口,即执行firewall-cmd --zone=public --add-port=22/tcp --permanent,随后重新加载防火墙配置(firewall-cmd --reload),从而恢复远程连接。
在使用 CentOS 7 系统时,默认情况下系统会使用 firewalld 作为防火墙管理工具,为了服务器安全,管理员会手动开启防火墙,或者在服务器重启后防火墙自动启动,如果操作不当,可能会导致 SSH 远程连接断开,或者新连接无法建立。
要在 CentOS 7 中确保防火墙开启后 22端口通,从而保持 SSH 连接畅通,请按照以下步骤进行配置:
检查防火墙状态
我们需要确认防火墙服务是否正在运行。

输入以下命令查看状态:
systemctl status firewalld
- 如果显示
active (running),说明防火墙正在运行。 - 如果显示
inactive (dead),请先启动防火墙:systemctl start firewalld systemctl enable firewalld # 设置开机自启
开放 22 端口
CentOS 7 默认情况下通常会开放 22 端口,但如果你之前重置了防火墙规则,或者为了安全起见进行了严格的策略配置,需要手动添加。
使用 firewall-cmd 命令来添加规则,关键参数说明:
--zone=public:表示选择 public 区域(公共区域)。--add-port=22/tcp:表示添加 22 端口,协议为 TCP。--permanent:表示永久生效(重启后依然有效)。注意:如果不加这个参数,重启后规则会失效。
执行以下命令:
firewall-cmd --zone=public --add-port=22/tcp --permanent
重载防火墙配置
添加完规则后,必须执行重载命令,让新规则立即生效,而无需重启服务器。
firewall-cmd --reload
验证端口是否开放
为了确保配置成功,可以使用 --list-ports 命令查看当前开放的端口列表。
firewall-cmd --list-ports
如果列表中包含 22/tcp,说明配置成功。
重启 SSH 服务(可选)
虽然开放防火墙端口通常就能解决问题,但为了确保新的 SSH 会话能正常建立,建议重启一下 SSH 服务:
systemctl restart sshd
在 CentOS 7 中,只要确保防火墙处于运行状态,并且通过 firewall-cmd --permanent --add-port=22/tcp 成功添加了 22 端口,然后执行 firewall-cmd --reload,就能保证 22端口通,从而实现 SSH 的正常远程连接。
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

