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

如果您尝试通过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限制)。
文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《SSH连接超时?防火墙设置影响远程访问》文章吧,也可关注golang学习网公众号了解相关技术文章。
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
466 收藏
-
249 收藏
-
187 收藏
-
157 收藏
-
359 收藏
-
475 收藏
-
103 收藏
-
395 收藏
-
288 收藏
-
365 收藏
-
233 收藏
-
316 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习