SSH 连接 CN2 VPS 出现 Connection timed out 通常意味着客户端发出的 TCP 握手包未收到服务器响应,优先排查本地网络连通性、云服务器安全组规则以及 SSH 服务端口状态。此问题多见于网络路由波动或防火墙拦截,操作前需确认 VPS 实例处于运行状态。
先说结论:Connection timed out 本质是网络层或传输层握手失败,需按本地网络、云厂商安全组、VPS 内部防火墙的顺序逐层排除。
- 先确认本地是否能解析域名且网络通畅,排除客户端问题。
- 先处理云控制台的安全组规则,确保 TCP 22 端口或自定义 SSH 端口开放。
- 再验证 SSH 服务状态,通过 VNC 或控制台登录检查 sshd 进程及防火墙配置。
命令速用版
以下命令用于快速定位连接中断的具体阶段,直接在本地终端执行即可。
ping 你的 VPS IP telnet 你的 VPS IP 22 ssh -v -p 22 root@ 你的 VPS IP
若无法使用 telnet,可使用 nc 命令替代:nc -vz 你的 VPS IP 22。
为什么会这样
核心原因是网络路径中断或目标端口不可达,导致 TCP 三次握手无法完成。CN2 线路虽优化了中国大陆访问速度,但仍可能受运营商路由波动、云厂商安全组默认策略或 VPS 内部 iptables/ufw 规则影响。Connection timed out 与 Connection refused 不同,前者是包丢了,后者是端口没监听。
分步处理
按网络层级从外向内排查,每一步操作后需立即验证结果。
1. 检查本地网络连通性
在本地终端执行ping 你的 VPS IP。若完全不通,可能是本地网络问题或 VPS 禁用了 ICMP 协议。若 Ping 通但 SSH 超时,说明网络层可达,问题在传输层或应用层。
2. 检查云厂商安全组
登录 VPS 提供商控制台,找到实例的安全组或防火墙设置。确认入站规则(Inbound)是否放行了 TCP 协议的 22 端口。若修改过 SSH 端口,需放行对应自定义端口。保存规则后等待 1-2 分钟生效。
3. 检查 VPS 内部防火墙
若安全组已开放,需通过控制台 VNC 登录 VPS。检查 iptables 或 ufw 状态。Ubuntu 系统可执行sudo ufw status,CentOS 系统可执行sudo iptables -L。确保没有规则 DROP 了 SSH 端口流量。
4. 检查 SSH 服务配置
在 VPS 内部执行sudo systemctl status sshd确认服务运行中。检查/etc/ssh/sshd_config文件,确认 Port 配置项与连接命令一致,且 PermitRootLogin 未被禁止。
怎么验证是否生效
使用 verbose 模式连接 SSH,观察输出日志的最后阶段。
执行ssh -v -p 22 root@ 你的 VPS IP,若看到debug1: Connecting to ... port 22.后紧接着debug1: Connection established.,说明网络握手成功。若卡在Connecting阶段无后续输出,说明仍然超时。若看到Connection refused,则说明端口未监听或被重置。
常见坑
排查过程中容易忽略以下细节,导致误判问题方向。
1. Fail2ban 封禁本地 IP
若多次密码错误,Fail2ban 可能将本地 IP 加入黑名单。此时表现为突然超时。需在 VPS 内部检查/var/log/fail2ban.log或通过控制台临时关闭 Fail2ban 服务验证。
2. ICMP 与 TCP 状态不一致
部分 VPS 默认禁 Ping(ICMP),但 SSH(TCP)端口正常。不要仅凭 Ping 不通就判定 VPS 宕机,必须以 telnet 或 nc 端口测试结果为准。
3. 运营商中间节点丢包
CN2 线路在晚高峰可能出现路由波动。使用 MTR 工具测试路径,若丢包发生在中间节点而非终点,属于网络波动,通常等待恢复或切换本地网络环境即可。
常见问题
Ping 不通但 telnet 端口通,能 SSH 吗?
可以正常连接。Ping 使用 ICMP 协议,SSH 使用 TCP 协议,VPS 防火墙可能仅禁用了 ICMP 而未限制 TCP 端口,以 telnet 端口测试结果为准。
修改 SSH 端口后连接超时怎么办?
确保云控制台安全组已放行新端口,且 SSH 命令中使用了-p 新端口参数。若未放行安全组,外部流量会被直接丢弃导致超时。
为什么之前能连现在突然超时?
常见原因是本地 IP 被 VPS 内部安全软件临时封禁,或云厂商安全组规则被意外重置。优先检查 Fail2ban 日志和安全组入站规则。