SSH 登录总要等好几秒?多半是这两个默认配置在拖
【摘要】 SSH 登录总要等好几秒?多半是这两个默认配置在拖每次 ssh 登录,输完密码(或密钥通过)后要等好几秒才出现 shell 提示符,命令本身没问题,就是登录过程卡住了。这类"登录慢"十有八九不是网络慢,而是服务端两个默认配置在拖时间。 先定位:卡在哪一步别猜,直接看详细过程:ssh -vvv user@host盯着输出里停顿最久的那一段。常见两种卡法:卡在 Next authenticat...
SSH 登录总要等好几秒?多半是这两个默认配置在拖
每次 ssh 登录,输完密码(或密钥通过)后要等好几秒才出现 shell 提示符,命令本身没问题,就是登录过程卡住了。这类"登录慢"十有八九不是网络慢,而是服务端两个默认配置在拖时间。
先定位:卡在哪一步
别猜,直接看详细过程:
ssh -vvv user@host
盯着输出里停顿最久的那一段。常见两种卡法:
- 卡在
Next authentication method: gssapi-with-mic之后:客户端在尝试 GSSAPI(Kerberos)认证,服务端没有 Kerberos 环境,尝试超时才往下走; - 卡在密钥认证通过、出现 shell 提示符之前:服务端在对你的 IP 做反向 DNS 解析,查不到 PTR 记录就一直等到超时。
对上号了再改,没对上就别乱改配置。
元凶一:GSSAPI 认证
不少发行版的 ssh 客户端默认开启 GSSAPI,服务端也默认接受。没有 Kerberos 的环境里,这一步纯属空转。
客户端先关掉它(只影响你这台机器,不动服务端):
# ~/.ssh/config
Host *
GSSAPIAuthentication no
改完立刻生效,下次登录就不再尝试 GSSAPI。如果只有你一个人觉得慢,改客户端就够了。
元凶二:UseDNS 反查
sshd 默认 UseDNS yes:每次登录都要把客户端 IP 反查成域名,写进日志。内网 IP、没有 PTR 记录的公网 IP、DNS 本身慢的机器,这一查就是几秒。
服务端关掉它(需要 root,改 /etc/ssh/sshd_config):
UseDNS no
改之前先检查配置语法,再重启服务:
sshd -t
systemctl restart sshd
注意两点:
- 重启 sshd 不会断开已有的会话,但保险起见,先别关当前窗口,另开一个窗口确认能正常登录,再关旧的;
- 关掉 UseDNS 后,登录日志里的来源只剩 IP、不再有主机名——如果你靠主机名做审计,就别关这一项,改从 DNS 侧修 PTR 记录。
小结
登录慢先 ssh -vvv 看卡点:卡在 GSSAPI 就关客户端的 GSSAPIAuthentication,卡在出提示符之前就关服务端的 UseDNS。两个都是默认配置,不改功能、只省掉无谓的等待——登录过程里的每一次超时,都是在为用不上的默认配置买单。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)