Linux系统运行Redhat 5.1。
当我使用SSH连接到计算机时,在login完成之前会有很长的延迟,并且会得到一个shell。
我做了一些研究,并find了解决这个问题的build议,我可以删除/etc/resolv.conf ,然后login会很快。 我试过这样做,实际上它工作。 删除/etc/resolv.conf加快了速度。
所以现在我想明白为什么这会导致问题,以及如何快速获得SSHlogin而不会破坏名称parsing。
更新 : UseDNS no在sshd_config (但没有解决问题)
作为连接到ssh服务器的安全措施, 服务器将对您正在连接的IP地址执行多个DNS查找。 这些DNS检查需要一段时间,特别是如果您正在连接的IP地址的反向区域未正确设置。
在你的/etc/ssh/sshd_config有一个选项可以设置为禁用DNS检查。 具体来说,你会想设置UseDNS no 。
man sshd_config
UseDNS
指定sshd(8)是否应查找远程主机名,并检查已parsing的远程IP地址的主机名是否映射到完全相同的IP地址。 默认是“是”。
另一个常见的问题来源可能与tcpwrappers有关。 如果SSH被编译为使用tcpwrappers,并且tcpwrappers被编译为执行DNS查找,那么您可以从中看到缓慢。
如果您从networking内部进行连接,则大部分延迟将通过设置适当的反向DNS区域来解决。
对于/etc/nsswitch.conf文件来说,它可能和/etc/resolv.conf文件一样多。 nsswitch.conf告诉linux应该使用不同的方法(dns,nis,/ etc / hosts等)来parsing东西,如主机,服务,networking等等的顺序。
resolv.conf专门用于查找dns,我的猜测是/etc/nsswitch.conf说在查找主机时使用文件之前使用dns,而当/etc/resolv.conf不存在时,它会跳过一个DNS查找。 所以当你inputssh username@hostname时候,在回到其他方式之前,它试图做一个dns查找,但是现在它只是跳过这一步。
可能还有其他事情正在进行,但可能是相关/相似的。
保重。
将以下行添加到您的sshd_config文件中:
UseDNS no
这将做的伎俩!