*使用者名稱* 身分驗證失敗次數過多

*使用者名稱* 身分驗證失敗次數過多

我有一個啟用了 ssh 訪問的 Hostgator 帳戶。當嘗試使用以下指令上傳產生的 .pub 金鑰檔案時:

rsync -av -e "ssh -p2222" /home/user/.ssh/key.pub [email protected]:.ssh/authorized_keys

我不斷得到:

收到與 111.222.33.44 的斷線:2:使用者名稱身分驗證失敗次數過多
rsync:連線意外關閉(到目前為止已收到 0 位元組)[傳送者]
rsync 錯誤:io.c(601) [sender=3.0.7] 出現無法解釋的錯誤(代碼 255)

我之前一直在嘗試 ssh,直到身份驗證失敗。但現在看來身份驗證失敗計數器沒有重置(現在已經等待超過 12 小時了,技術支援「假設」它會在 30 分鐘到 1 小時後重置,另一個人告訴我「每次您嘗試使用用戶名”,天哪)。

這讓我抓狂。我什至在 Slicehost 自訂伺服器中進行了設置,並且比這些人遇到的問題更少。

有小費嗎?也許這是客戶端而不是伺服器端的東西。

答案1

這通常是由於無意中提供了多個 ssh 金鑰而導致到伺服器。提供過多密鑰後,伺服器將拒絕任何密鑰。

-v您可以透過將標誌新增至ssh命令中以獲取詳細輸出來親自查看這一點。您將看到提供了一堆密鑰,直到伺服器拒絕連接並說:“[用戶] 身份驗證失敗次數過多”。如果沒有詳細模式,您只會看到不明確的訊息“連接被對等方重置”

為了防止提供不相關的金鑰,您必須在~/.ssh/config(客戶端電腦上)文件的每個主機條目中明確指定這一點,方法IdentitiesOnly如下新增:

Host www.somehost.com
  IdentityFile ~/.ssh/key_for_somehost_rsa
  IdentitiesOnly yes
  Port 22

如果您使用 ssh-agent,它有助於運行ssh-add -D以清除身份。

如果您沒有使用任何 ssh 主機配置,則必須在命令中明確指定正確的金鑰,ssh如下所示:

ssh -i some_id_rsa -o 'IdentitiesOnly yes' them@there:/path/

注意:「IdentitiesOnly yes」參數需要位於引號之間。

或者

ssh -i some_id_rsa -o IdentitiesOnly=yes them@there:/path/

答案2

我找到了一種更簡單的方法來執行此操作(如果使用密碼身份驗證):

ssh -o PubkeyAuthentication=no [email protected]

這強制進行非金鑰身份驗證。我能夠立即登入。

參考

答案3

我也遇到了這個錯誤,發現它發生的原因是伺服器被配置為接受最多 6 次嘗試:

/etc/ssh/sshd_config
...
...
#MaxAuthTries 6

除了在文件IdentitiesOnly yes中設定 之外~/.ssh/config,您還有其他幾個選項。

  1. 增加MaxAuthTries(在ssh伺服器上)
  2. 刪除目錄中存在的一些密鑰對~/.ssh/並運行ssh-add -D
  3. 將密鑰明確連結到~/.ssh/config檔案中的給定主機

就像這樣:

host foo
hostname foo.example.com
IdentityFile /home/YOU/.ssh/foo
  1. 這可能不是一個好方法,因為它會稍微削弱你的 ssh 伺服器,因為它現在在給定的連接嘗試中接受更多的金鑰。在這裡考慮暴力攻擊向量。

  2. 假設您擁有不需要且可以永久刪除的金鑰,這是一個好方法。

  3. 設定 IdentitiesOnly 的方法可能是處理此問題的首選方法!

答案4

如果您收到以下 SSH 錯誤:

$ Received disconnect from host: 2: Too many authentication failures for root

如果您的 .ssh 目錄中儲存了(在我的系統上預設)五個或更多 DSA/RSA 身分文件,並且在命令列中未指定「-i」選項,則可能會發生這種情況。

ssh 用戶端將首先嘗試使用每個身分(私鑰)登錄,然後提示進行密碼驗證。但是,sshd 在五次錯誤的登入嘗試後會斷開連接(同樣,預設值可能會有所不同)。

如果 .ssh 目錄中有多個私鑰,您可以在命令列中使用「-o」可選參數停用「公鑰身份驗證」。

例如:

$ ssh -o PubkeyAuthentication=no root@host

相關內容