你这种场景:内网 PC → 防火墙 → 出口设备 → 目标 SSH 服务器,SSH 不通,90% 出在防火墙域间策略、安全域、路由、目的端口这几块。
一、先确认最基础 3 件事
SSH 服务器本身正常吗?同网段机器直接 ssh 能通吗?能通说明服务没问题,就是防火墙 / 路由问题。
SSH 端口是不是 22?有没有改过?改过端口防火墙必须放行对应端口,不能只放 22。
ping 能不能通?
ping 通、ssh 不通 → 防火墙策略 / 端口过滤
ping 不通、ssh 不通 → 路由或安全域隔离
二、防火墙核心排查(重点)
以 ** 华三防火墙(F1000/F100)** 最常见为例:
1. 安全域是否划对
内网接口必须在 Trust 域出口 / 上联接口必须在 Untrust 域
plaintext
display zone
display interface # 看接口属于哪个域
2. 域间策略必须放行 SSH
最常见就是没开 22 端口 或方向反了。
放行 Trust → Untrust 的 SSH
plaintext
security-policy
rule name trust-to-untrust-ssh
source-zone trust
destination-zone untrust
service ssh # 系统自带服务,默认22端口
action pass
如果是自定义端口(比如 2222),要建自定义服务:
plaintext
service protocol tcp destination-port 2222
security-policy
rule name trust-to-unroll-ssh2222
service 自定义服务名
action pass
3. 检查是否有默认拒绝策略挡了
plaintext
display security-policy
确保上面这条 permit SSH 在 deny 之前。
4. 检查是否开了 ASPF(应用层检测)
SSH 属于长连接,有时 ASPF 会误拦截:
plaintext
display aspf policy
测试时可以临时关一下看是否通:
plaintext
undo aspf policy enable
三、出口设备(路由器 / 交换机)排查
出口有没有 ACL 过滤 22 端口
出口有没有 黑洞路由、策略路由 把流量导错
NAT 是否正确
内网访问外网 SSH 一般不需要做目的 NAT,只要源 NAT 正常即可。
四、客户端侧简单测试
在 PC 上用 telnet 或 powershell 测端口通不通:
plaintext
telnet 服务器IP 22
或者
plaintext
Test-NetConnection 服务器IP -Port 22
端口不通 → 防火墙 / 路由问题
端口通但连不上 → SSH 服务或密钥 / 账号问题
五、最常见的几种原因总结
防火墙域间策略没放 SSH(22 端口)
接口安全域划错,比如内网在 Local 或 DMZ
出口 ACL 过滤了 TCP 22
SSH 服务器改了端口,防火墙只放了 22
路由不可达,数据包去了不回 / 回不来
暂无评论
内网客户机经过防火墙和出口访问不了 SSH,问题大概率出在网络路径上的某个节点,建议按“路径分段”的思路来排查:
出口路由器的NAT和ACL:检查NAT映射是否正确,ACL是否放行了关键流量。
防火墙的安全策略:检查防火墙的安全策略,确保来自内网、指向SSH服务器的流量被允许。
目标服务器自身:检查SSH服务状态、端口监听及本地防火墙是否已正确放行22端口。
首先,通过ping测试网络是否通畅。如果ping不通,说明网络路径不通,重点排查中间设备的路由和链路。如果ping通但SSH连不上,则问题集中在端口、服务或策略上。
从服务器本机验证SSH服务是否正常运行:
检查SSH服务状态:运行 sudo systemctl status sshd,确保状态为 active (running)。
检查SSH服务端口监听:运行 sudo netstat -tulnp | grep :22 或 sudo ss -tulnp | grep :22,确保服务监听在 0.0.0.0:22 上。
检查服务器本地防火墙:确认服务器的本地防火墙已允许22端口的入站流量。例如,CentOS系统可使用 sudo firewall-cmd --list-all 检查,Ubuntu系统可使用 sudo ufw status 检查。
出口路由器是来自公网的SSH连接必须通过的第一道关口,请重点检查以下配置:
NAT端口映射:检查出口路由器是否将公网IP的某个端口(如10022)映射到了内网服务器的22端口。可以使用 display nat server 命令查看。
ACL访问控制列表:检查出口路由器上是否配置了ACL限制了来自公网的SSH访问。
检查串联在路径中的防火墙是否配置了相应的安全策略。
确认安全域:明确流量源(如Trust)和目的(如DMZ或Untrust)所属的安全域。
创建/检查安全策略:确认是否有策略允许从源安全域到目的安全域的、服务为SSH的流量,并确保该策略未被更严格的策略覆盖。
抓包分析:在防火墙或出口路由器的两侧接口进行抓包,确认数据包是否到达、是否正确转发。
查看设备日志:检查防火墙、路由器及目标服务器的系统日志,寻找被拒绝或错误的信息。ssh -vvv user@host 可以提供详细的连接调试信息。
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论