ssh 连上去要等十几秒才弹密码提示,登录之后操作并不慢,sshd 日志里 Connection from 之后隔很久才有下文,内网别的主机正常。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
ssh -vvv user@host 2>&1 | grep -E 'DNS|GSSAPI' sudo sshd -T | grep -E 'usedns|gssapiauth' sudo sed -i 's/^#UseDNS.*/UseDNS no/' /etc/ssh/sshd_config sudo systemctl reload sshd
sshd 默认会对客户端地址做反向解析,DNS 不通就一直等到超时,GSSAPI 认证又会额外打几次请求,两件事叠加就成了十几秒,看着像网络卡顿。这一点先确认清楚,后面就不用反复试。
碰到「SSH 登录慢」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。
备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。
具体做法是,客户端加两个 v 参数看究竟卡在哪个阶段 输出里时间戳很清楚;服务端关掉 UseDNS 与 GSSAPI 认证选项 两个都要关才有用 只关一个仍会慢;用 sshd 的 T 参数复核实际生效配置再 reload 别直接重启 sshd 避免连接被切。
改完照着核一遍,再次登录密码提示两秒内出现 sshd 日志时间戳连续 老连接不受影响。
