ssh登录卡在密码提示前几秒不动,主因是服务端usedns yes触发dns反向解析超时;应修改/etc/ssh/sshd_config设usedns no并重启sshd,辅以ssh -v定位卡点。

SSH 登录卡在密码提示前几秒不动,基本不是网络慢,而是服务端在认证前强行做 DNS 反向解析(PTR 查询)——客户端 IP 没有对应域名记录,或 DNS 不可达,就会等超时(默认 5–10 秒)才继续。RDP 本身不依赖 DNS 反向解析,所以该问题只影响 SSH,和 RDP 无关。
确认是否真是 DNS 反向解析导致
在客户端执行带详细日志的连接命令:
- ssh -v user@server_ip(小写 v,不是 V)
- 观察输出中 debug1: Authentications that can continue: 这一行之后是否长时间无响应
- 若停顿出现在这一行后、Password: 提示前,且持续 5 秒以上,基本锁定为 UseDNS 超时
- 同时留意是否有 debug1: Trying to reverse map address 类似字样,这是直接证据
服务器端快速验证与修复
登录服务器(可用已有的密码方式),检查并修改 SSH 服务配置:
免费 DNS 与邮件安全分析(IntoDNS.ai):包括 DNSSEC、SPF、DKIM、DMARC、MTA-STS、BIMI、SMTP STARTTLS、FCrDNS、黑名单、发件人要求及报告。
- 运行 sudo grep -i "usedns\|gssapi" /etc/ssh/sshd_config
- 若看到 UseDNS yes(或未配置,默认即 yes),说明开启反向解析
- 编辑配置:sudo nano /etc/ssh/sshd_config
- 将 UseDNS yes 改为 UseDNS no
- 顺手确认 GSSAPIAuthentication 是否为 no(非必需但建议一并关闭)
- 保存后重启服务:sudo systemctl restart sshd
排除其他干扰因素
避免误判,需同步排查以下常见共存问题:
- 客户端 IPv6 fallback:Mac 或 Linux 客户端若优先尝试 IPv6 地址但本地无 IPv6 网络,会等待超时。可临时加 -4 强制走 IPv4:ssh -4 user@server_ip
- 服务器端 PAM 延迟:检查 /etc/pam.d/sshd 中是否有 pam_faildelay.so 或类似延迟模块,首次连接可能被人为加休眠
- Shell 初始化阻塞:密码输完后才卡?那是 ~/.bashrc 或 ~/.zshrc 里执行了 curl、git、hostname -f 等网络或 DNS 操作,与 SSH 协议无关
- 本地 hosts 文件未生效:虽不推荐,但若坚持用 DNS 方式,可在服务器 /etc/hosts 中添加客户端 IP 和假名(如 192.168.1.50 client-local),并确认 /etc/nsswitch.conf 中 hosts: files dns 且 files 在前
RDP 接入不受影响,无需调整
RDP 协议本身不执行客户端 IP 的反向 DNS 解析,Windows 远程桌面服务(TermService)也不依赖 PTR 记录做准入校验。因此,同一台服务器上 RDP 登录流畅,而 SSH 卡顿,恰恰反向印证了问题出在 OpenSSH 的 UseDNS 机制,而非网络设备、防火墙或 DNS 服务器整体故障。










