首页/发现新知
视界 · 深度阅读

ubuntu ssh为何速度很慢

Ubuntu 上 SSH 连接速度很慢(尤其是登录时卡很久)是非常常见的问题,通常不是网络带宽问题,而是配置或系统行为导致的。下面按「最常见 → 较少见」给你梳理原因和解决办法。


一、最常见原因(90% 情况)

1️⃣ DNS 反向解析(最重要)

SSH 默认会尝试对客户端 IP 做 反向 DNS 解析,如果 DNS 不通或很慢,就会卡住。

✅ 解决方法(服务端):

sudo nano /etc/ssh/sshd_config

修改或添加:

UseDNS no

然后重启 SSH:

sudo systemctl restart ssh

2️⃣ GSSAPI 认证尝试

SSH 客户端会尝试 GSSAPI(Kerberos)认证,失败很慢。

✅ 客户端禁用:

nano ~/.ssh/config

添加:

Host *
    GSSAPIAuthentication no

或服务端:

GSSAPIAuthentication no

二、登录慢但不是连接慢

3️⃣ PAM / 登录脚本慢

  • /etc/profile
  • ~/.bashrc
  • ~/.profile
  • PAM 模块(如 MOTD、landscape)

✅ 排查:

time ssh user@host echo ok

✅ 临时测试:

ssh user@host bash --noprofile --norc

4️⃣ MOTD / 动态欢迎信息

Ubuntu 默认会执行:

/etc/update-motd.d/*

可能访问网络(如 Ubuntu Pro、esm)。

✅ 关闭:

sudo chmod -x /etc/update-motd.d/*

三、网络层问题

5️⃣ IPv6 优先但不可用

SSH 先尝试 IPv6,失败再 IPv4。

✅ 客户端:

AddressFamily inet

✅ 或服务端:

ListenAddress 0.0.0.0

6️⃣ 防火墙 / 安全组丢包

  • UFW
  • 云厂商安全组
  • 中间设备

✅ 测试:

ssh -v user@host

看卡在哪一步。


四、加密算法兼容问题(老客户端)

某些旧 SSH 客户端 + 新 Ubuntu:

  • 密钥交换慢
  • 算法协商慢

✅ 可显式指定:

ssh -o KexAlgorithms=diffie-hellman-group14-sha1 user@host

五、快速自查命令(推荐)

ssh -v user@host

重点看卡在:

  • expecting SSH2_MSG_KEX_ECDH_REPLY → 网络
  • pledge: network → DNS / PAM
  • Trying GSSAPI → GSSAPI

✅ 一句话总结

Ubuntu SSH 慢,90% 是 UseDNS yes + GSSAPI 导致的,关掉立刻飞起。

如果你愿意,可以贴一段:

ssh -v user@host

卡住的部分,我可以帮你精确判断是哪一环。

读到这里,发现更多一点。探索更多内容 ↗