ssh + 长 ssh 延迟和 resolv conf 文件

ssh + 长 ssh 延迟和 resolv conf 文件

运行Redhat 5.1的Linux系统。

当我使用 SSH 连接到机器时,登录完成并获得 shell 之前需要很长时间。

我做了一些研究,找到了解决这个问题的方法,建议我可以删除/etc/resolv.conf,然后登录就可以快速进行。我试过了,确实有效;删除/etc/resolv.conf加快了速度。

所以现在我想了解为什么这会导致问题,以及如何在不破坏名称解析的情况下获得快速 SSH 登录。

更新UseDNS no已进入sshd_config(但尚未修复该问题)

答案1

作为连接到 ssh 服务器时的安全措施,服务器将对您连接的 IP 地址执行多次 DNS 查找。这些 DNS 检查可能需要一段时间,特别是如果您连接的 IP 地址的反向区域设置不正确时。

在您的 中,/etc/ssh/sshd_config您可以设置一个选项来禁用 DNS 检查。具体来说,您需要设置UseDNS no

sshd_config 命令

使用DNS

指定 sshd(8) 是否应查找远程主机名并检查远程 IP 地址的解析主机名是否映射回相同的 IP 地址。默认值为“是”。

另一个常见问题可能与tcpwrappers如果 SSH 被编译为使用 tcpwrappers,而 tcpwrappers 被编译为执行 DNS 查找,那么您可以从中看到速度很慢。

如果您从网络内部连接,则通过设置适当的反向 DNS 区域可以解决大部分延迟问题。

答案2

它可能与 /etc/nsswitch.conf 文件以及 /etc/resolv.conf 文件有很大关系。nsswitch.conf 告诉 Linux 它应该使用不同方法(dns、nis、/etc/hosts 等)来解析主机、服务、网络等的顺序。

resolv.conf 专门用于 DNS 查找,我猜想 /etc/nsswitch.conf 表示在查找主机时先使用 DNS,然后再使用文件,而当 /etc/resolv.conf 不存在时,它会跳过 DNS 查找。因此,当您输入时,它ssh username@hostname会尝试进行 DNS 查找,然后再转而使用其他方法,但现在它只是跳过了该步骤。

可能还有其他事情正在发生,但可能相关/类似。

小心。

答案3

将以下行添加到您的 sshd_config 文件:

UseDNS no

这就成功了!

相关内容