動動發财的小手,點個贊吧!
SSH 是 Secure Shell 的縮寫,是一種遠端網絡協定,用于通過 TCP/IP 網絡安全地連接配接到遠端裝置,例如伺服器和網絡裝置。
它是一種加密網絡協定,可提供強大的加密技術和散列法來保護網絡上兩個裝置之間的通信。
SSH使用兩種主要的認證方式:密碼認證和公鑰認證。使用密碼驗證時,使用者提供遠端主機的 IP 位址或 FQDN(完全限定域名)和密碼進行驗證。
公鑰認證使用SSH 密鑰對進行認證,SSH 密鑰對由兩個SSH 密鑰組成:私鑰和公鑰。
私鑰駐留在使用者的機器上,應始終保密和安全。公鑰儲存在使用者連接配接的遠端主機上。在身份驗證期間,比較兩個密鑰的身份并授予通路權限。
通過 SSH 連接配接到遠端系統時,您可能會遇到錯誤 Client_loop: send disconnect: Broken pipe。
在本教程[1]中,我們将了解為什麼會發生這種情況并解決錯誤。
Client_loop: send disconnect: Broken pipe 錯誤
該錯誤隻是一條斷開連接配接消息,通知您已超過 SSH 連接配接逾時。
這是一個不活動的時期,在此期間沒有從用戶端執行或發出任何 Linux 指令。發生這種情況時,SSH 會話将終止,進而有效地斷開您與遠端伺服器的連接配接。
大多數使用者通常會按“ENTER”或鍵盤上的某個鍵,以避免空閑 SSH 會話導緻與主機斷開連接配接。然而,這可能是乏味且浪費時間的。
值得慶幸的是,SSH 預設配置設定提供了一些參數,您可以配置這些參數以使 SSH 連接配接保持活動狀态更長的時間。
修複 Client_loop: send disconnect: Broken pipe 錯誤
要解決此問題,您需要增加用戶端上的 SSH 連接配接逾時時間。為此,請修改通常位于 /etc/ssh/sshd_config 的預設 SSH 配置檔案。
sudo vi /etc/ssh/sshd_config
請務必找到這兩個參數:ClientAliveInterval 和 ClientAliveCountMax。讓我們看看他們做了什麼。
- ClientAliveInterval——這是一段不活動的時間,在此之後 SSH 伺服器向連接配接到它的遠端用戶端發送一條活動消息。
- ClientAliveCountMax – 這是伺服器嘗試将活動消息從伺服器發送到用戶端的次數。
我們将這兩個值設定如下:
ClientAliveInterval 300
ClientAliveCountMax 3
這意味着在用戶端不活動的前 300 秒(5 分鐘)之後,伺服器将向用戶端發送一條活動消息以保持 SSH 會話處于活動狀态。
如果在接下來的 300 秒内(在 600 秒标記處)沒有從用戶端收到任何資料或響應,伺服器将再次發送另一條活動消息。最後,在用戶端不活動 900 秒後,SSH 連接配接将終止或斷開。
請務必儲存對檔案所做的更改,然後退出。然後重新啟動 SSH 守護程式。
sudo systemctl restart sshd
或者,您可以通過以秒(300 秒)為機關指定 ServerAliveInterval 參數來連接配接到您的遠端用戶端 Linux 系統,這意味着您的 SSH 會話處于活動狀态最多 5 分鐘。
ssh -o ServerAliveInterval=300 username@server_ip_address
在本教程中,我們示範了如何解決 Client_loop: send disconnect: Broken pipe 錯誤。如您所見,您隻需在 SSH 配置檔案中執行一些調整。
Reference
[1]Source: https://www.tecmint.com/client_loop-send-disconnect-broken-pipe/