騰訊雲國際帳號辦理 解決雲服務器 SSH 連接超時斷開
SSH斷連?別慌,先別摔鍵盤!
\n每次正輸入關鍵指令時,SSH突然斷開?彷彿被無形之手掐住脖子,急得滿頭大汗?別擔心,這不是你的錯,而是SSH協議的「健忘症」作祟。今天就來教你怎么讓這台「健忘的傢伙」乖乖听话,保持穩定連接。
\n\n原因大揭秘:誰偷走了你的連接?
\n1. 伺服器端的超時設定
\n雲服務器預設的SSH服務會在閒置一段時間後自動斷開。這通常是因為/etc/ssh/sshd_config中的ClientAliveInterval設為0(即不啟用),或者設定值過長。想象一下,如果你和朋友聊天,對方突然沉默太久,你可能也會以為對方掉線了,於是掛斷——伺服器也是這樣「聰明」。
2. 客戶端的閒置超時
\n騰訊雲國際帳號辦理 你的本地SSH客戶端(比如Terminal或PuTTY)也有自己的超時機制。如果沒設定心跳包,客戶端會認為伺服器沒回應,自動斷開連接。就像你打電話給朋友,對方一直沒回應,你可能就掛了,但其實對方可能只是在思考。
\n\n3. 中間網絡設備的干擾
\n防火牆、NAT路由器或雲服務商的負載均衡器,都可能設定閒置超時。比如阿里雲的安全組規則,若沒特別配置,可能300秒沒流量就斷開。這就像你開車過橋,橋樑管理員規定沒車通行就關閉通道,不管你車裡坐著誰。
\n\n解決方案:雙管齊下,搞定斷連
\n1. 伺服器端調整
\nSSH伺服器需要定期發送心跳包給客戶端。打開/etc/ssh/sshd_config,加入以下設定:
ClientAliveInterval 60\nClientAliveCountMax 3\n這表示每60秒發一次心跳,若連續3次沒回應才斷開,也就是3分鐘內沒活動才斷。重啟SSH服務生效:
\nsystemctl restart sshd\n或
\nservice sshd restart\n\n2. 客戶端調整
\n在本地~/.ssh/config文件(沒有的話新建一個)加入:
Host *\n ServerAliveInterval 60\n ServerAliveCountMax 3\n這樣客戶端也會每60秒發心跳包,確保連接活躍。對於PuTTY用戶,可以在「Connection」選項卡設置「Seconds between keepalives」為60。
\n\n3. 雙保險:tmux/screen守護
\n萬一連接還是斷了,可以用tmux或screen創造一個「虛擬工作間」。安裝後輸入tmux new -s mysession,開始工作。斷開連接後,重新SSH登入,輸入tmux attach -t mysession即可找回所有進程。這招就像給你的SSH加了個「時光膠囊」,斷線也不怕丟失進度!
以Ubuntu為例,安裝tmux只需一句命令:
\nsudo apt install tmux
\nCentOS/RHEL則用:
\nsudo yum install tmux
4. 別忽略中間環節的干擾
\n檢查雲服務商的安全組規則,確保允許長時間連接。例如阿里雲可能需要在安全組中放行SSH端口,並確認是否有「閒置超時」的設置。若有疑問,直接聯繫雲商技術支持,他們通常會提供具體建議。例如,AWS的ELB預設60秒超時,若使用ELB,需調整其設定或確保SSH心跳包頻率小於60秒。
\n\n常見誤區:別掉進這些坑
\n只改一邊,另一邊沒動
\n很多人只改伺服器端或客戶端,結果效果甚微。記住!SSH連接需要兩端默契配合,就像跳雙人舞,只有一個人動作是跳不成的。例如,伺服器端設置心跳包,但客戶端不回應,還是會斷開;反之亦然。兩邊都調整才能徹底解決。
\n\n設置值太激進或太保守
\n把ClientAliveInterval設成1秒,雖然連接穩了,但會增加網絡負擔;設成300秒又可能太長,還是會斷。建議60秒左右,平衡穩定與效率。這就像泡茶,水溫太高會燙壞,太低又泡不出香氣,剛剛好最重要。此外,ClientAliveCountMax通常設為3,代表3次心跳沒回應才斷,這樣能容忍短暫的網絡波動。
真實案例:小王的SSH救贖記
\n某雲服務器運維員小王,每天上班都為SSH斷連抓狂。每次輸入幾行命令就斷開,重新連接又要重新輸入指令,效率低下。他先試著調整伺服器端的ClientAliveInterval,但還是經常斷開。後來發現客戶端也沒設置,於是兩邊都調整,並安裝了tmux。現在他無論在咖啡廳、機場,還是深夜加班,SSH連接都穩如泰山。最誇張的是,有一次他邊喝咖啡邊打瞌睡,SSH沒斷,醒來繼續工作——老闆誇他工作效率提升50%,還獎勵了一杯咖啡!

