在ssh到linux的時候發現 輸入完 ssh xx@xxx.xxx.xxx.xxx之后,需要等待很長時間才能輸入密碼之類的東西。
以下摘自網絡
近幾天通過SSH登錄局域網內的一台機器時,在輸入用戶名后,得等10多秒后才會有響應回來,很慢,但PING的時候TTL時間很快,那機器負載也蠻小的。這個小問題存在了幾天,一直沒顧上解決,今天在網上查了些資料,終於知道的這個問題產生的原因。
原因之一是因為LINUX系統的一個文件/etc/nsswitch.conf ,在這里面有如下一行
hosts: files dns
這行的含義是對於訪問的主機進行域名解析的順序,是先訪問file,也就是/etc/hosts文件,如果hosts中沒有記錄域名,則訪問dns,進行域名解析,如果dns也無法訪問,就會等待訪問超時后返回,因此等待時間比較長。
解決這個問題有以下幾個方法:
1. 在server上/etc/hosts文件中把你本機的ip和hostname加入,改后便可生效;
2. 在server上/etc/ssh/sshd_config文件中修改或加入UseDNS=no,然后/etc/init.d/ssh restart使配置生效;
3. 修改server上/etc/nsswitch.conf中hosts為hosts: files,改后便可生效; #我訪問慢的原因就是因為上邊這個原因,通過上邊幾個方法都能解決掉
另外一個原因可能是
authentication gssapi-with-mic出現問題,在server上/etc/ssh/sshd_config文件中修改GSSAPIAuthentication no.
/etc/init.d/sshd restart重啟sshd進程使配置生效。 如果以上兩招還不能解決問題,善於使用DEBUG MODE ssh -v來查看log,找到停滯時間最長的步驟,然后針對性的修改配置解決。
之前是在centos下嘗試的,最近使用Ubuntu 12.04.2 LTS,也發現了這個問題,通過3能夠解決,但是上網的時候,導致dns無法解析的副作用,又嘗試了一下,發現在文件 /etc/ssh/ssh_config 中屏蔽
# GSSAPIAuthentication yes
# GSSAPIDelegateCredentials no
也能就能解決問題了。