SSH连接失败通常因防火墙或安全组阻止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 save 或 sudo 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字段是否包含*:22或0.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限制)。










