首页/系统/信创系统运维速查/SSH 登录慢的排查
常见问题65 条

SSH 登录慢的排查

SSH 登录慢多在认证前协商阶段:DNS 反解、GSSAPI 协商、多密钥尝试;用 ssh -vvv 找停留点,再做对应调整。

信创系统运维速查系统更新于 2026-10-13

登录慢通常卡在哪一段

SSH 登录分为连接建立、密钥交换、认证前协商、身份认证几个阶段,卡顿几乎都发生在认证之前:服务端尝试对客户端地址做反向解析、协商中等待不需要的认证机制、客户端逐个尝试本机所有密钥。用带调试输出的客户端命令就能看出时间消耗在哪一步。

区分两种慢

「输入密码前就慢」属于协商阶段的问题,调整服务端相关开关或客户端密钥选择即可改善;「登录成功之后才卡」通常是会话初始化问题,比如挂载家目录、执行登录脚本时读取了不可达的网络路径,这一类要查会话初始化脚本与目录挂载,与 SSH 本身无关。

基本信息

服务端配置/etc/ssh/sshd_config,改动后先做语法校验再重载
客户端调试ssh -vvv 输出各阶段耗时与协商细节
常见开关反向解析开关、协商机制开关
验证方式同一账号在不同客户端对比耗时

典型使用场景

  • 内网服务器登录要等十几秒,影响批量运维效率
  • 自动化脚本连接超时,需要降低协商耗时
  • 客户端本地密钥过多,依次尝试导致认证阶段变慢
  • 新上线机器登录正常、老机器登录慢,需要对比配置差异
  • 排查登录后被踢出的问题时区分是协商还是会话阶段

定位阶段

定位阶段
time ssh -vvv user@host 2>&1 | grep -E 'Entering|Authenticating|offering|expecting' | head -30
# 输出中相邻两行的时间差就是该阶段耗时
journalctl -u sshd --since '10 min ago' | tail -20    # 服务端侧时间点对照
time ssh -o PreferredAuthentications=publickey user@host   # 只走密钥认证对比

常见调整

常见调整
# 服务端 /etc/ssh/sshd_config 中按需调整:
# UseDNS no                       避免对客户端地址做反向解析
# GSSAPIAuthentication no         跳过不需要的协商机制
sshd -t && systemctl reload sshd     # 先校验语法再重载,不要直接重启
# 客户端减少密钥尝试:
ssh -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519 user@host

现象与方向

现象可能的阶段处理方向
认证提示前长时间无输出反向解析或协商等待调整服务端开关
提示密钥尝试多条后成功客户端密钥过多指定密钥并关闭自动尝试
登录后立即卡住会话初始化或目录挂载检查登录脚本与家目录挂载
特定客户端慢、其他正常客户端侧配置或网络对比客户端版本与网络路径
所有机器都慢跳板或网络设备检查路径上的设备与延迟
修改服务端配置时保留一个已登录的会话,改完先做配置语法校验再重载服务,避免把自己锁在门外。

易错点

  • 改完服务端配置直接重启而不做语法校验,配置写错会导致服务起不来
  • 把登录后卡顿也当成协商问题去调开关,真正原因在家目录挂载或登录脚本
  • 客户端密钥过多时逐个尝试,认证阶段明显变慢,指定密钥与限制尝试范围即可改善
  • 只在一台客户端上验证,忽略了特定客户端或网络路径造成的差异

数据来源与参考

  • man 5 sshd_config
  • man 1 ssh
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌