SSH錯誤:身份交換失敗,連線已關閉

在許多情況下,「ssh_exchange_identification: Connection closed by remote host」錯誤可能是由「hosts.deny」和「hosts.allow」設定檔的問題引起的,但也有其他可能的原因。如果您正在閱讀本文,則很可能已經確認這兩個檔案都沒有阻止您的IP位址嘗試使用「ssh」連線到遠端伺服器。

如果情況屬實,問題可能與依賴關係、記憶體碎片化,甚至單一客戶端的會話數過多有關。好消息是,一旦問題解決,錯誤就不會再出現。

方法一:修復缺失的依賴項

如果在更新 `OpenSSL` 或 `glibc` 後僅收到錯誤 `ssh_exchange_identification: connection closed by remote host`,則問題可能與缺少依賴項有關。在這種情況下,請執行以下命令。 sudo lsof -n | grep ssh | grep DEL 從命令列執行此操作。這將列出所有開啟的文件,然後尋找最近刪除的、與 `ssh` 服務(守護程式)相關的文件。

如果沒有任何結果,您可以嘗試重新啟動服務(守護程式)或系統本身。如果出現多個錯誤,則需要嘗試重啟,但您可以忽略與 `/run/user/1000/gvfs` 相關的訊息,因為它們是由虛擬檔案系統的另一個問題引起的。

如果您懷疑是依賴關係出了問題,也可以嘗試使用 `apt-get`、`pacman` 或 `yum` 來更新軟體包。如果您使用的是基於 Debian 或 Ubuntu 的系統,不妨試試看。 sudo apt-get -f upgrade 看看這樣是否能修復你可能遇到的任何損壞的軟體包。

方法二:糾正記憶片段

如果以上方法無效,則可能是主機端有問題。運行在虛擬機器 (VM) 中的主機並非總是擁有交換分區,這可能導致記憶體碎片化。嘗試透過其他方式存取主機,如果可能,最好是實體訪問,然後重新啟動出現問題的服務。 MySQL、Apache、nginx 和其他類似服務都可能是罪魁禍首。

雖然重新啟動主機並非總是可行,但它可以解決問題,如果您交替收到此錯誤訊息和返回 IP 位址的另一個錯誤訊息,那麼重啟主機可能是一個好主意。請記住,如果您對伺服器有任何存取權限,則可以執行該命令。 vmstat -s 而且,即使是一般用戶,在許多情況下也能獲得一些關於記憶體使用情況的重要統計資料。

第三種方法:檢查是否有額外的 SSH 副本

如果不是這個原因,請檢查主機是否正在嘗試連線到伺服器。您可能在不知不覺中超過了 SSH 會話的最大數量。結束舊的會話,然後嘗試重新連線。一個簡單的方法是執行命令 `/`。 要查看已註冊用戶的活動,您應該只能看到一到兩個已註冊用戶。如果存在多個並行會話,請關閉使用者會話並嘗試重新登入。

如果 sshd 無法跟上循環啟動多個不同 SSH 會話的腳本,就會發生這種情況。如果之前發生過這種情況,請新增以下命令。 睡0.3 進入迭代循環,以便給隱藏的 sshd 留出時間來跟上進度。

方法四:找出 sshd 連線限制

當嘗試使用 SSH 存取路由器或其他類型的整合式適配器時,這類連線問題尤其常見,因為預設的最大連線數非常小。雖然您不希望伺服器過載,但可以檢查預設設定。

嘗試運行 伺服器應配置為處理一定數量的連線。大多數情況下,預設系統設定應為 10 個並發連接,這對於大多數伺服器架構來說已經足夠,因為大多數使用者都需要經常使用 SSH。

 

評論被關閉。