登录
首页 >  文章 >  常见问题

SSH连接超时?防火墙设置影响远程访问

时间:2026-02-26 10:54:50 309浏览 收藏

SSH连接超时或失败往往并非单纯网络问题,而是防火墙与安全策略层层设防的结果——从云平台安全组、中间网络出口限制、本地系统防火墙,到服务器内部iptables/firewalld规则、SSH服务监听配置,乃至NAT转发和带宽限制,任一环节疏漏都可能导致连接卡在“正在连接…”而无响应;本文提供一套系统化排查路径,手把手教你逐层穿透这些隐形屏障,快速定位并修复22端口访问受阻的真正原因,让远程运维回归稳定高效。

云服务器SSH连接超时?防火墙或安全组配置【远程接入】

如果您尝试通过SSH连接云服务器,但连接过程长时间无响应或直接中断,则可能是由于防火墙规则或安全组策略阻止了SSH端口(默认22)的入站流量。以下是解决此问题的步骤:

一、检查云服务商安全组规则

安全组是云服务器的虚拟防火墙,控制进出实例的网络流量。若未放行SSH端口,外部连接将被直接拒绝。

1、登录云服务商控制台,进入云服务器(ECS/ECS实例)管理页面。

2、找到目标实例,点击其名称或操作列中的“更多”或“安全组”,进入安全组绑定详情页。

3、点击关联的安全组名称,进入该安全组规则配置页。

4、在入方向规则列表中,查找是否存在协议类型为TCP、端口范围为22、授权对象为0.0.0.0/0(或指定IP段)的规则。

5、如不存在,点击“添加入方向规则”,填写:类型选择“SSH(22)”,协议类型选“TCP”,端口范围填“22”,源IP地址填所需访问的IP或网段(如需限制可填具体IP,测试阶段可暂设为0.0.0.0/0)。

二、验证本地及中间网络防火墙策略

本地终端所在网络(如企业内网、校园网)可能部署了出口防火墙或代理设备,主动拦截或限制SSH连接请求。

1、切换至其他网络环境(例如使用手机热点),再次尝试SSH连接。

2、若切换后连接成功,说明原网络存在策略限制;此时可联系网络管理员确认是否屏蔽了TCP 22端口或SSH协议特征。

3、在本地Windows系统中,打开“Windows Defender 防火墙”设置,进入“高级设置”,检查“入站规则”中是否存在禁用OpenSSH Server或阻断22端口的规则。

4、在本地Linux主机上执行命令:sudo ufw status verbose,确认ufw是否启用且未拒绝22端口;若启用且无对应允许规则,执行:sudo ufw allow 22

三、检查云服务器操作系统内置防火墙

即使安全组已放行,云服务器操作系统内部运行的iptables、firewalld或nftables仍可能拦截SSH连接请求。

1、通过VNC或云平台提供的Web Shell登录服务器(绕过SSH)。

2、执行命令:sudo systemctl is-active firewalld,若返回active,则继续执行:sudo firewall-cmd --list-all,查看public区域是否包含ssh服务或端口22。

3、若未列出,执行:sudo firewall-cmd --permanent --add-service=ssh,再执行:sudo firewall-cmd --reload

4、对于使用iptables的系统,执行:sudo iptables -L INPUT -n,确认是否存在ACCEPT规则匹配dpt:22;若无,添加:sudo iptables -I INPUT -p tcp --dport 22 -j ACCEPT,并保存规则(如:sudo service iptables savesudo iptables-save > /etc/iptables/rules.v4)。

四、确认SSH服务监听状态与绑定地址

SSH服务进程虽在运行,但若仅监听127.0.0.1或未启用TCP连接,外部请求仍将超时。

1、执行命令:sudo systemctl status sshd(CentOS/RHEL)或 sudo systemctl status ssh(Ubuntu/Debian),确认服务状态为active (running)。

2、执行命令:sudo ss -tlnp | grep :22,观察输出中Local Address:Port字段是否包含*:220.0.0.0:22;若仅显示127.0.0.1:22,说明SSH仅接受本地连接。

3、编辑SSH配置文件:sudo nano /etc/ssh/sshd_config,确认存在且未被注释的行:ListenAddress 0.0.0.0(或无此行,默认监听所有地址),以及Port 22未被修改。

4、修改后执行:sudo systemctl restart sshd(或 sudo systemctl restart ssh)。

五、排查SSH客户端连接参数与网络路径

客户端配置不当或中间路由设备(如NAT网关、负载均衡器)异常也可能导致连接卡顿或超时,而非立即拒绝。

1、在SSH命令中添加调试参数:ssh -v -o ConnectTimeout=10 -o ServerAliveInterval=30 user@server_ip,观察日志中卡在哪个阶段(如resolve、connect、key exchange)。

2、执行:telnet server_ip 22(如未安装,可用nc -zv server_ip 22替代),验证TCP层是否可达;若提示Connection refused,说明端口关闭或被拒;若提示timeout,说明网络路径不通或被丢包。

3、若云服务器位于私有子网且通过NAT网关对外提供服务,确认NAT网关已配置端口转发规则,将公网IP的22端口映射至云服务器内网IP的22端口。

4、检查云服务器所在地域的公网带宽是否已耗尽,或实例规格是否触发了突发性能限制(部分共享型实例存在网络I/O限制)。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《SSH连接超时?防火墙设置影响远程访问》文章吧,也可关注golang学习网公众号了解相关技术文章。

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>