1、背景
在同一機房中,有多臺安裝了CentOS 7作業系統的伺服器,它們的配置除了IP地址不同外基本相同。這些伺服器的資源利用率都不高,但在使用SSH連線時,發現有幾臺伺服器連線速度較慢,可能需要等待30-60秒才能提示輸入密碼,但一旦連線成功後,速度就恢復正常。
2、SSH登陸慢原因
這種情況主要有兩種可能的原因:
2.1. DNS反向解析問題
OpenSSH在使用者登入的時候會驗證IP,它根據使用者的IP使用反向DNS找到主機名,再使用DNS找到IP地址,最後匹配一下登入的IP是否合法。如果客戶機的IP沒有域名,或者DNS伺服器很慢或不通,那麼登入就會很花時間。
在目標伺服器上修改sshd伺服器端配置,預設情況下會有一行被註釋掉的記錄#UseDNS yes,雖然這條記錄被註釋掉了,但ssh預設情況下UseDNS的值是yes,所以要顯式的指定該值為no。
vi /etc/ssh/sshd_config UseDNS no
並重啟ssh服務。
systemctl restart sshd.service
2.2 關閉ssh的gssapi認證
用ssh -v user@server 可以看到登入時有如下資訊:
debug1: Next authentication method: gssapi-with-mic debug1: Unspecified GSS failure. Minor code may provide more information
注意 1:ssh -vvv user@server 可以看到更細的debug資訊。
注意 2:GSSAPI ( Generic Security Services Application Programming Interface) 是一套類似Kerberos 5的通用網路安全系統介面,該介面是對各種不同的客戶端伺服器安全機制的封裝,以消除安全介面的不同,降低程式設計難度,但該介面在目標機器無域名解析時會有問題,使用strace檢視後發現,ssh在驗證完key之後,進行authentication gssapi-with-mic,此時先去連線DNS伺服器,在這之後會進行其他操作。
修改sshd伺服器端配置。
vi /etc/ssh/sshd_config GSSAPIAuthentication no
並重啟ssh服務。
systemctl restart sshd.service
3、總結
在連線速度較慢的機器均修改了sshd配置,同時關閉DNS反向解析以及gssapi認證,修改後機器ssh都很快,秒連。