使用 ssh 客戶端(如:putty)連線 Linux 站群伺服器,可能會等待 10-30 秒才有提示輸入密碼,嚴重影響工作效率。登入很慢,登入上去後速度正常,這種情況主要有兩種可能的原因:
1. DNS 反向解析問題
OpenSSH 在使用者登入的時候會驗證 ip,它根據使用者的 IP 使用反向 DNS 找到 WordPress 主機名,再使用 DNS 找到 IP 地址,最後匹配一下登入的 IP 是否合法。如果客戶機的 IP 沒有域名,或者 DNS 站群伺服器很慢或不通,那麼登入就會很花時間。
解決辦法:
在目標站群伺服器上修改 sshd 站群伺服器端配置, 並重啟 sshd
vi /etc/ssh/sshd_config
UseDNS no
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 資訊
解決辦法:
修改 sshd 站群伺服器端配置
vi /etc/ssh/ssh_config
GSSAPIAuthentication no
可以使用 ssh -o GSSAPIAuthentication=no user@server 登入
GSSAPI ( Generic Security Services Application Programming Interface) 是一套類似 Kerberos 5 的通用網際網路安全系統介面,該介面是對各種不同的客戶端站群伺服器安全機制的封裝,以消除安全介面的不同,降低程式設計難度,但該介面在目標機器無域名解析時會有問題, 使用 strace 檢視後發現,ssh 在驗證完 key 之後,進行 authentication gssapi-with-mic,此時先去連線 DNS 站群伺服器,在這之後會進行其他操作。
原文轉載自《Linux 就該這麼學》:http://www.linuxprobe.com/ssh-login-slowly/