ssh驗證慢的問題

OpenSSH在用戶登錄的時候會驗證IP,它根據用戶的IP使用反向DNS找到主機名,再使用DNS找到IP地址,最後匹配一下登錄的IP是否合法。如果客戶機的IP沒有域名,或者DNS服務器很慢或不通,那麼登錄就會很花時間。

解決辦法:

在目標服務器上修改sshd服務器端配置,並重啓sshd

vi /etc/ssh/sshd_config,設置UseDNS爲no即可

當然也可以通過提供DNS正確反向解析的方法解決,有如下兩種思路


(1)在server上/etc/hosts文件中把常用的ip和hostname加入,然後在/etc/nsswitch.conf看看程序是否先查詢hosts文件(一般缺省是這樣)。

修改server上的hosts文件,將目標機器的IP和域名加上去。或者讓本機的DNS 服務器能解析目標地址。

vi /etc/hosts

192.168.12.16  ourdev


其格式是“目標機器IP 目標機器名稱”這種方法促效。沒有延遲就連上了。不過如果給每臺都加一個域名解析,挺辛苦的。但在windows下用putty或secure-crt時可以採用這種方法。


(2)起一臺dns服務器(可以是本機),加入反向解析,把這個dns服務器加入到/etc/resolv.conf中。

2. 關閉ssh的gssapi認證


用ssh -v user@server 可以看到登錄時有如下信息:

debug1: Next authentication method: gssapi-with-mic

debug1: Unspecified GSS failure. Minor code may provide more information

注:ssh -vvv user@server 可以看到更細的debug信息


解決辦法:

在客戶端上修改ssh客戶端配置(注意不是sshd_conf)

vi /etc/ssh/ssh_config,設置GSSAPIAuthentication no  並重啓sshd

可以使用ssh -o GSSAPIAuthentication=no user@server登錄


GSSAPI ( Generic Security Services Application Programming Interface) 是一套類似Kerberos 5 的通用網絡安全系統接口。該接口是對各種不同的客戶端服務器安全機制的封裝,以消除安全接口的不同,降低編程難度。但該接口在目標機器無域名解析時會有問題


使用strace查看後發現,ssh在驗證完key之後,進行authentication gssapi-with-mic,此時先去連接DNS服務器,在這之後會進行其他操作

轉載來自http://www.linuxidc.com/Linux/2012-12/77144.htm

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章