运行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
。
使用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
这就成功了!