我在家中使用 MacBook Pro,並定期透過 ssh 連接到實驗室的機器。然而,在過去的 3-4 天裡,每當我透過 SSH 連接到實驗室的機器時,我都會收到「寫入失敗:管道損壞」錯誤,幾乎在我進行 ssh 後的 2 分鐘內。
事實上,幾天前一切都運作良好,這讓我感到困惑,如果能提供任何幫助讓一切恢復正常,我將不勝感激。
答案1
這看起來像是網路問題。
查詢某些網路設備是否已變更或已重新配置。告訴您的網路管理員您在 ssh 登入時遇到問題,防火牆可能有設定錯誤。嘗試從其他機器登入或登入其他機器以改善診斷。
這些症狀的可能原因之一是 IP 位址衝突。檢查客戶端和伺服器從哪裡取得 IP 位址。如果你繼續ping server.example.com
跑步,是否有助於延長連結時間?如果是這樣,則存在 IP 位址衝突。 (這ping
很有幫助,因為它會不斷告訴路由器將 IP 封包路由到您的電腦 - 但如果另一台電腦在您之前發送 ARP 回复,您仍然會失去連線。)如果這是問題所在,您需要修復它:安排其中一台使用相同位址的機器使用不同的位址。
另請檢查您電腦上的路由表。確保傳送至伺服器的資料包路由至正確的介面。 (雖然錯誤的路由表通常會導致連接根本無法工作,但有一種邊緣情況,其症狀如您所描述的那樣:如果您透過 DHCP 獲取位址,並且 DHCP 伺服器也是您正在聯繫的伺服器 — DHCP 伺服器的位址將被路由到所需的接口,直到您的ARP 快取過期。
答案2
這可能是由於資料包遺失造成的。類似的工具mtr
可以幫助您診斷路由中的哪一台主機導致問題。這裡您將找到在 Mac OS X 上安裝它的說明。
答案3
我在總部的一些伺服器上出現了這個問題,並使用以下方法解決了它:
TCPKeepAlive yes
ServerAliveInterval 5
在 ssh 中配置文件 (~/.ssh/config or /etc/ssh/ssh_config
)。
後來我才發現,這是因為為了優化辦公室之間的通訊而安裝的一些硬體造成了乾擾。
答案4
我已經解決了 Mac OS X 中的問題,我已經更改了
#ClientAliveInterval 0
到
ClientAliveInterval 300
在/etc/sshd_config
以下這,然後重新啟動機器,完成。