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記錄打開這個選項也沒有意義,只會浪費時間。