Linux下的ssh 服务器一般用的都是OpenSSH,可是发现有些时候通过ssh连接服务器时总会有大概10秒钟左右的延迟。
一开始以为是OpenSSH的安全策略,防止端口扫描,后来发现自己想多了。解决方法如下:
修改服务器上的/etc/ssh/sshd_config文件,注意是sshd_config,不是ssh_config。
将其中的UseDNS一行的注释去掉,改为:
UseDNS no
重启sshd:
# service sshd restart
退出ssh,重新登录,发现没有延迟了。
默认情况下,UseDNS选项是打开的,当客户端连接ssh服务器时,ssh服务器会根据客户端的ip地址RTR反向查询客户端的hostname,然后再根据hostname进行DNS解析,得到ip地址,验证与原客户端的ip地址是否一致。这是一种防欺诈的手段,但是我们做实验的服务器都在内网中,客户端也在内网中,没有RTR记录打开这个选项也没有意义,只会浪费时间。