最近頻繁遇到ssh登入到伺服器驗證慢的這個問題,今天抽時間總結下原因以及解決辦法。
UseDNS
登入到伺服器端檢視sshd_config配置檔案,當UseDNS項配置為yes時(預設情況下可能大多數系統都為yes),當UseDNS啟用時,我們用戶端嘗試登入伺服器時,伺服器會根據用戶端的IP位址反向解析到用戶端的主機名,然後通過DNS正向解析驗證是否與源IP位址一緻,但是一般情況下我們的辦公網IP位址或者家用位址都不會有解析記錄,是以該配置對于我們來說是可以關閉的,關閉此配置一般可以解決在使用公網遠端時登入伺服器慢這個問題。
vim /etc/ssh/sshd_config
UseDNS no
GSSAPIAuthentication
近期遇到了一個内網登入其他伺服器非常慢的例子,在修改了UseDNS配置項後沒有太大幫助,因為關閉UseDNS配置項主要是能優化公網通路過程中登入慢的問題,至于為什麼打開GSSAPIAuthentication會造成内網登入伺服器慢呢,下面我們通過ssh登入過程進行分析。
ssh -v [email protected]
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
在這裡我們隻取了一行對我們作用比較大的輸出内容,從這行内容中我們看到,當我們從用戶端遠端伺服器時認證順序如下:
publickey
-->
gssapi-keyex
gssapi-with-mic
password
,從這個認證順序我們可以知道,最先使用的認證是公鑰認證方式,最先當然也就表明這種方式是登入最快的認證,是以如果我們登入伺服器使用的是公鑰進行認證,隻要公鑰認證正常,GSSAPIAuthentication配置項我們是不需要關閉的,因為我們并不需要經曆GSSAPIAuthentication認證過程,但是如果我們是用密碼進行登入認證的,GSSAPIAuthentication認證項的時間我們是需要等待的,這就是造成我們使用密碼登入時間過長的原因,是以這裡解決有兩種辦法:一、我們使用公鑰進行登入驗證。二、使用密碼驗證時關閉GSSAPIAuthentication。
vim /etc/ssh/sshd_config
GSSAPIAuthentication no
作者:Federico Sun
部落格位址:https://www.cnblogs.com/Cherry-Linux
座右銘:人總是這麼痛苦嗎?還是隻有小時候這樣?總是如此。