温馨提示×

ubuntu ssh超时怎么解决

小樊
92
2026-09-25 07:39:46
栏目: 智能运维

在 Ubuntu 上遇到 SSH 连接超时(超时断开、连接慢、自动掉线等),可以从客户端、服务端、网络三方面排查和解决。下面按常见场景给你一套实用方案。


一、连接时直接超时(连不上)

1. 检查网络和基本连通性

ping 服务器IP
  • 不通:网络/防火墙问题
  • 通但 SSH 连不上:继续看下面

2. 检查 SSH 服务是否运行

在服务器上执行:

systemctl status ssh

没运行就启动:

sudo systemctl start ssh
sudo systemctl enable ssh

3. 检查防火墙

Ubuntu 常用:

sudo ufw status

如果启用,确保 22 端口开放:

sudo ufw allow 22

云服务器还要检查:安全组 / 防火墙规则

4. 修改 SSH 端口被拦

如果你改过端口(如 2222):

ssh -p 2222 user@ip

并确保防火墙和安全组放行该端口。


二、SSH 连接慢(登录超时)

1. 关闭 DNS 反向解析(非常常见)

编辑服务器配置:

sudo nano /etc/ssh/sshd_config

修改或添加:

UseDNS no
GSSAPIAuthentication no

重启 SSH:

sudo systemctl restart ssh

2. 客户端加参数测试

ssh -o ConnectTimeout=10 -o ServerAliveInterval=30 user@ip

三、SSH 长时间不用自动断开(空闲超时)

服务器端配置(推荐)

编辑:

sudo nano /etc/ssh/sshd_config

添加:

ClientAliveInterval 60
ClientAliveCountMax 3

含义:每 60 秒发一次心跳,最多 3 次无响应才断开

重启:

sudo systemctl restart ssh

客户端配置(你自己的机器)

编辑:

nano ~/.ssh/config

添加:

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

四、NAT / 路由器导致 SSH 掉线

如果你是:

  • 家庭宽带
  • 公司 NAT
  • 跳板机

解决方式:

  • 增大心跳间隔(上面已写)
  • 使用 autossh
sudo apt install autossh
autossh -M 0 -o "ServerAliveInterval=30" user@ip

五、连接直接 timeout(不是密码错)

常见原因:

  • IP 错了
  • 端口错了
  • 被封 IP
  • SSH 服务崩溃

看服务器日志:

sudo tail -f /var/log/auth.log

六、快速排查清单(总结)

✅ 网络通不通
✅ SSH 服务在不在
✅ 防火墙 / 安全组
✅ UseDNS no
✅ 心跳保活
✅ 日志看 auth.log


如果你愿意,可以告诉我:

  • 是 连接不上 还是 连上后掉线
  • 报错原文(如 Connection timed out)
  • 是本地 Ubuntu 还是云服务器

我可以给你更精确的方案。

0 踩