服务器SSH连接慢,DNS反向解析问题解决办法
时间:2026-10-20 07:27 作者:emer 分类: 无
前言
用 ssh 登录服务器,输入密码前要等好几秒甚至十几秒才出现密码提示,连上之后命令回显也卡。很多人以为是网络差,其实最常见原因是 sshd 在做 DNS 反向解析,解析超时才放行。本篇给出关闭反向解析的标准做法。
一、为什么会慢:DNS反向解析
客户端连上后,sshd 默认会把客户端 IP 反查成主机名(UseDNS yes)。如果服务器配的 DNS 解析不了这个公网 IP,就一直等到超时,表现为卡在登录前。
二、关闭sshd反向解析(核心)
编辑配置文件:
vi /etc/ssh/sshd_config
找到或新增两行:
UseDNS no
GSSAPIAuthentication no
UseDNS no:关闭IP反查;GSSAPIAuthentication no:关闭GSSAPI认证,这也会触发额外DNS查询导致卡顿。
三、重启sshd生效
systemctl restart sshd
# CentOS7 服务名是 sshd,部分发行版是 ssh
systemctl status sshd
注意:重启前保留一个已登录的会话,避免配置写错把自己锁在外面。
四、其他导致SSH慢的因素
- DNS配置本身慢:检查
/etc/resolv.conf,解析超时的nameserver会拖慢所有服务,可临时改成公共DNS测试; - 反向解析写进hosts:不想关UseDNS也可在
/etc/hosts里把常用客户端IP和主机名写死,跳过查询; - GSSAPI:客户端侧也可加
-o GSSAPIAuthentication=no临时绕过; - 登录banner/反向PTR:某些版本还会尝试获取PTR记录,关UseDNS一并解决。
五、验证是否改善
# 客户端用详细模式看卡在哪一步
ssh -v root@服务器IP
观察卡在 Trying reverse mapping / GSSAPI 字样的位置,关掉对应项后应秒出密码提示。
常见坑
- 改完不重启sshd:配置不生效;
- 改错文件:是
sshd_config(服务端),不是ssh_config(客户端); - 重启时断开当前连接:保留旧会话再操作,防止锁死;
- 公司内网IP也被反查:UseDNS no 对所有连接生效,不影响安全登录。
总结
SSH登录慢九成是 UseDNS yes 反向解析超时,改 /etc/ssh/sshd_config 为 UseDNS no、GSSAPIAuthentication no,重启sshd即可秒连。
遇到问题加QQ23979811 协助处理