背景
两台设备连的是同一个路由器/WiFi,看起来在同一局域网里:
- 客户端(Windows):
192.168.1.8/24,网关192.168.1.1 - 服务端(Linux):
192.168.0.105/24,网关192.168.0.1
Linux 上还配置了 VPN 接口(如10.0.0.x、11.0.0.x)。目标是从客户端 SSH 登录 Linux。
问题
从 Windows 执行ssh user@192.168.0.105连接超时。
现象:
| 测试项 | 结果 |
|---|---|
ping 192.168.0.105 | ✅ 通 |
ssh 192.168.0.105:22 | ❌ 超时 |
Linux 本机ssh user@127.0.0.1 | ✅ 正常 |
排查思路
1. 先确认 Linux 端 SSH 服务
sudosystemctl statussshsudoss-tlnp|grep:22sudoufw status若 sshd 运行、监听0.0.0.0:22、防火墙未拦截 →问题不在 Linux。
2. 对比客户端网段
ipconfig# Windowsip a# Linux若客户端是192.168.1.x,服务端是192.168.0.x,虽属同一物理网络,但属于不同 IPv4 子网。
3. 验证跨网段路由与端口
ping 192.168.0.1 ping 192.168.0.105 tracert 192.168.0.105Test-NetConnection-ComputerName 192.168.0.105-Port 22典型结果:Ping 通,路由经192.168.1.1转发到192.168.0.x,但TCP 22 被路由器/防火墙丢弃。
4. 排除 VPN 路径
Linux 本机测试ssh user@10.0.0.x、ssh user@11.0.0.x若正常,说明 VPN 地址可用;客户端需先连 VPN 才能走该路径。
解决方法
方案一:客户端改到同一网段(最快)
将 Windows 静态 IP 设为192.168.0.x/24(避开服务端已占用地址),网关192.168.0.1,再 SSH:
ssh user@192.168.0.105方案二:服务端改到客户端网段
Linux 改用 DHCP 获取192.168.1.x,Windows 直连新地址 SSH。
方案三:改路由器
登录路由器,关闭 AP/访客隔离,或放行192.168.1.0/24 → 192.168.0.x:22。
方案四:走 VPN(不改 IP)
客户端连 VPN 后,用 Linux VPN 地址连接:
ssh user@10.0.0.x# 或ssh user@11.0.0.x结论
Ping 通 ≠ SSH 能连。跨子网时路由器常放行 ICMP、拦截 TCP 22。优先让两端处于同一 IPv4 网段,或通过VPN/路由器放行解决。