Linux——ssh登入很慢解決方法

人艰不拆_zmc發表於2024-04-01

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都很快,秒連。

相關文章