"Connection timed out" 是什么意思
超时意味着你的包完全没有得到回应——它们在某处被丢弃,或被发往一个不存在任何东西的地址。这是和 Connection refused(一个主动的"这里没人在听"回复)的关键区别:refused 证明机器可达;timed out 证明什么都不可达。原因全是"你的流量到不了那台机器"的变体:IP 错、主机关了、防火墙静默丢弃、或者——移动端的头号情况——从外部去连一个私有地址。
原因,按可能性排序
| # | 原因 | 典型场景 |
|---|---|---|
| 1 | 从外部连私有 IP | 家里 Wi-Fi 能连,蜂窝数据超时 |
| 2 | IP 错了 / 变了 | DHCP 给机器换了地址 |
| 3 | 主机关了 / 睡了 | 笔记本合盖、树莓派断电 |
| 4 | 防火墙设为 DROP | 云安全组没有 SSH 规则 |
| 5 | 所在网络封端口 | 公司/酒店网络封出站 22 |
1——经典款:"在家能连,出门超时"
192.168.x.x、10.x.x.x、raspberrypi.local 这类地址只存在于你家网络内部。从蜂窝或任何别的网络,发往它们的包无处可去——必然超时。干净的解法不是端口转发(把 SSH 暴露到公网),而是网格 VPN:把机器和手机都放进 Tailscale,从任何地方连它稳定的 100.x 私有地址。TermAI 内置 Tailscale,手机端不需要额外 App。
2——核实 IP 和主机在不在
同一网络下 ping 那个地址。没有回应通常是 IP 错/变了,或机器没电——查路由器设备列表,或在机器上跑 hostname -I。记住休眠策略:合盖且没设"防止睡眠"的 Mac 不会应答;电源不稳的树莓派可能悄悄挂了。
3——丢弃而非拒绝的防火墙
云服务商的安全组对不允许的流量是丢弃,看起来就是超时(不是拒绝)。VPS 在 22 端口超时,先查服务商面板的防火墙规则。机器本身也一样:sudo ufw status——DROP 策略没放行 SSH 时表现相同。
4——你所在的网络封了它
一些公司、学校、酒店网络封出站 22 端口。切到蜂窝测试:突然能连了,就是网络的问题。长期方案:在你控制的服务器上把 SSH 跑在 443,或者——更干净——Tailscale,它无需开端口就能穿过这些网络。
60 秒诊断
ping HOST # 有回应?主机存在且可达
nc -vz HOST 22 # 端口应答?("succeeded" / "refused" / 卡住 = 被丢弃)
# 每个端口都卡住 → 路由/防火墙;22 上 refused → 看 refused 那篇 在手机上,从那个网络里任何你能连上的机器跑这些——或问 TermAI 助手要确切的探测命令,在那台机器上运行。
常见问题
为什么 SSH 在家能用、移动数据下超时?
你在连一个家庭网络之外不存在的私有局域网地址。用 Tailscale(TermAI 内置)给机器一个从任何地方可达的稳定地址。
timed out 和 refused 有什么区别?
Timed out = 完全没有回应(不可达、被丢弃、或地址错)。Refused = 机器应答了但那个端口上没人在听。
为什么我的 VPS 在 22 端口超时?
多半是服务商的安全组/云防火墙没有 SSH 规则——流量在操作系统看到之前就被静默丢弃了。
快速事实
- 含义:包没有得到回应——主机不可达、流量被丢、或地址错
- 移动端头号原因:从外部连私有局域网 IP → 用 Tailscale,别端口转发
- 云端原因:安全组 DROP(查服务商面板)
- 诊断:
ping+nc -vz host 22——卡住=被丢,refused=看 refused 篇
Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.