嘗試登入 ESXi 伺服器會導致錯誤「沒有支援的驗證方法可用 (伺服器傳送:公鑰)」
Summary: 本文提供從 ESXi 角度針對 SSH 問題進行故障診斷的詳細指南。但是,此處討論的概念和解決方案也適用於其他基於Linux的操作系統,因此此資訊對於更廣泛的環境很有價值。
Symptoms
嘗試使用 SSH 登入至 ESXi 伺服器時,會導致錯誤「沒有支援的驗證方法可用 (伺服器已傳送:公鑰)」,如下所示:
嘗試從其他 ESXi 伺服器登入時,會顯示下列錯誤:
Cause
伺服器會拒絕 SSH 工作階段,因為 sshd_config 檔案中的「challengeresponseauthentication」參數設為「no」,且伺服器未正確設定非對稱認證 (RSA 公開和私密金鑰認證)。
因此,嘗試使用 Putty 連接到伺服器會導致錯誤“沒有支援的身份驗證方法可用(伺服器發送:公鑰)。
當使用者嘗試從其他 ESXi 主機建立 SSH 連線時,也會觀察到類似的行為。在這種情況下,使用者會收到錯誤“載入密鑰'/.ssh/id_rsa':libcrypto中的錯誤”,但不會被質詢輸入密碼,並且連接失敗。
如果伺服器未正確配置為非對稱身份驗證,但“ChallengeResponseAuthentication”參數設置為“是”,則使用者會收到一條錯誤消息,但隨後會提示使用者輸入其密碼。正確輸入密碼后,即可成功建立連接。
Resolution
使用 DCUI 連線至目標伺服器主控台,然後在 /etc/ssh/sshd_config 組態檔案中將challengeresponseauthentication 編輯為是。
ChallengeResponseAuthentication
ChallengeResponseAuthentication 設定指定 SSH 連線是否允許質詢-回應驗證。啟用此選項后,SSH 伺服器要求客戶端在允許它們進行身份驗證之前回應質詢。它在某些 SSH 伺服器實現 中預設 處於啟用狀態,但出於安全原因,它可能會在某些系統上禁用,例如在 Red Hat 中,如 Red Hat 文章 336773 中所述。
ChallengeResponseAuthentication 是 KbdInteractiveAuthentication 的已淘汰別名。參考資料:OpenSSH:版本資訊
Additional Information
更多詳情:
-
設定質詢回應身份驗證和密碼身份驗證的組合會產生略有不同的提示:
ChallengeResponseAuthentication 設為 「否 」, passwordauthentication 設為 「是」:

ChallengeResponseAuthentication 設為 「否 」, PasswordAuthentication 設為「 是」,或 兩者均設為 「是」:

更多故障診斷步驟:
-
在用戶端,使用 ssh 命令中的 -v 選項列印有關 ssh 進度的除錯訊息。多個 -v 選項可增加詳細資料 (最大為 3):

…

-
在目標伺服器中,增加 LogLevel
設定的詳細程度,以擷取有關失敗的 SSH 工作階段嘗試的更多詳細資料:
LogLevel
給出從 sshd(8)記錄消息時使用的詳細級別。可能的值為:安靜、嚴重、錯誤、資訊、詳細、除錯、除錯 1、除錯 2 和除錯3 預設值為 INFO。DEBUG 和 DEBUG1 是等效的。DEBUG2 和 DEBUG3 各自指定更高級別的調試輸出。使用調試級別進行日誌記錄會侵犯用戶的隱私,因此不建議這樣做。
- 檢閱目標伺服器中的 /var/run/log/auth.log 以取得錯誤的詳細資訊。