CentOS连接Xshell慢到炸:DNS反向解析关闭就快了
ssh卡半分钟才弹出密码框,不是网烂,是服务器非要先给你做“背景调查”。关掉DNS反向解析,秒进终端,就这么简单。

先别急着换网线,问题在服务器
刚装好的CentOS,内网ping值个位数,Xshell却每次握手都拖二十秒,进度条像卡住一样。很多人第一反应是“线路垃圾”,于是换路由、加网卡、调QoS,一顿操作猛如虎,延迟纹丝不动。其实SSH服务默认开启了UseDNS=yes,每次连接它都要把客户端IP反查成域名,查不到就硬等超时,这才是真凶。
DNS反向解析到底在干嘛
服务端收到连接,先拿你的IP去问DNS:这谁家的?如果DNS没配PTR记录,请求一路丢包,sshd就傻等,默认超时30秒。内网环境、云主机、家用路由,九成九没PTR记录,于是每一台新机器都要白等半分钟。关掉它,sshd跳过查户口,直接问密码,延迟瞬间掉到毫秒级。
一行配置,10秒搞定
登录服务器,root权限执行:

vi /etc/ssh/sshd_config
找到#UseDNS yes,改成:
UseDNS no
保存后重启服务:
systemctl restart sshd
再开Xshell重新连接,进度条一闪就进命令行,世界清爽。

怕改错?先留后门
改配置前,另开一个已连着的窗口别关,万一改错端口或禁了密码,还能救场。云主机再配个控制台VNC,双保险。
还有GSSAPI也在拖时间
如果关了UseDNS还慢,把GSSAPIAuthentication也关掉:
GSSAPIAuthentication no
这货专搞Kerberos认证,内网根本用不到,一起禁掉更丝滑。
检查生效没,一条命令
重启后看sshd有没有读进新配置:
sshd -T | grep -i usedns
回显usedns no说明成功,再连一次Xshell验证秒进。
批量机器?Ansible一分钟推完
几十台CentOS手动改太磨人,写个playbook:
---
• hosts: all
tasks:
• lineinfile: path=/etc/ssh/sshd_config regexp='^#?UseDNS' line='UseDNS no'
notify: restart sshd
handlers:
• name: restart sshd
service: name=sshd state=restarted
执行完整集群瞬间提速,运维早下班。
云厂商镜像为何不改默认
官方包为了兼容各种奇葩审计,默认全开UseDNS,宁可慢也不敢漏日志。自己用就别客气,关。
CentOS SSH延迟、Xshell连接慢、DNS反向解析、UseDNS、GSSAPI禁用,记住这几个词,再遇卡顿直接定位改配置,别瞎折腾网络。
