其實這問題困擾我很久,只是人發懶,想說慢個幾秒就算了,今天上網找了一下,果然就跟DNS有關。
解決辦法
1.修改ssh daemon設定檔
1 |
$ vim /etc/ssh/sshd_config |
2.找到這行
1 |
UseDNS yes |
3.改成no
1 |
UseDNS no |
4.存檔重開ssh daemon
1 |
$ service sshd restart |
原因
大家都知道DNS是網址domain name跟iP解析的關鍵,看看man page對UseDNS這個設定值的說明:
UseDNS Specifies whether sshd(8) should look up the remote host name and check that the resolved host name for the remote IP address maps back to the very same IP address. The default is “yes”.
意思就是說當遠端連線進來時,SSH會去查詢遠端的主機名稱(host name),然後看看DNS解析出來的IP有沒有跟連線進來的IP一樣。
所以如果機器的DNS設定得不對、不好,或者連線時網路狀況很糟糕,SSH查詢解析host name的時候就會慢了,所以我們的解決辦法就是把這個設定關掉,雖然這個辦法很鴕鳥,但是有時候算是個解決辦法。像我在家裡就是那種第四台業者的網路,尖峰時間慢到一個不行,SSH連線登入至少停到那裏10秒以上,泡杯咖啡再回來還在連…(冏)。
網路上還有估狗到幾篇說把GSSAPIAuthentication也關閉,man page說預設是關閉的,所以設不設定就沒差了。