1. 程式人生 > >阿里雲ssh斷開處理辦法

阿里雲ssh斷開處理辦法

一、背景說明

1.1 牆外的吐槽

雲是個好東西但我一直不覺是個有那麼好的東西,因為就較多次的體驗來看,用得很難受;如果要我來選我寧願自建機房。要說難受的具體原因原來倒是沒想得很清楚,現在想來網速慢不是最主要的主要的是,主要的是我們站在牆外操作牆內的主機,然後被操作主機要從牆內向牆外反饋結果。

如果是物理機,那麼人與裝置相對於網路同處於一側,人可以直接操作機器甚至是物理操作機器;而如果是雲,那麼人與裝置分處於網路的兩側,人只能通過網路操作機器,首先要確保網路是沒問題的然後操作程度只能限於雲提供的介面。

 

1.2 阿里雲ssh斷開描述

在阿里雲建了幾臺虛擬機器開放埠後ssh連上去,短則幾秒鐘長則十來分鐘就自動斷開,正在操作也會斷開。

因為會話維持的長短時間不一所以不是定時斷開,由於正在操作也斷開所以也不是會話超時斷開(檢視TMOUT確實也未設定),從未見過這種情況不懂什麼原因。而且觀察到似乎網路流量越大斷開越快。

 

二、處理辦法

2.1 無效的網上處理辦法

網上看到最多的處理辦法是編緝/etc/ssh/sshd_config在最後追加以下兩項,然後重啟sshd

cat >> /etc/ssh/sshd_config << EOF
# ClientAliveInterval設定服務端向客戶端傳送存活確認的時間間隔,單位為秒
ClientAliveInterval 60
# ClientAliveCountMax設定服務端向客戶端傳送存活確認客戶端無響應即主動關閉會話的次數
ClientAliveCountMax 8888 EOF # systemd也無所謂,會自動重定向到systemctl restart sshd service sshd restart

從道理上來說這種方法應該是可行的才對,但在多臺Centos6和7都未見有效依然斷開。

 

2.2 啟用TCPKeepAlive

經常在yum、make、mvn等命令中途斷開,雖然nohup有些作用,但還是感覺飽受折磨。

無意間注意到本地機器的配置檔案中啟用了TCPKeepAlive,而阿里雲中未啟用,試了一下似乎真有用至少就現在觀察來看到了第二天都不會自動斷開。所以最終處理辦法如下:

cat >> /etc/ssh/sshd_config << EOF
# ClientAliveInterval設定服務端向客戶端傳送存活確認的時間間隔,單位為秒
ClientAliveInterval 60
# ClientAliveCountMax設定服務端向客戶端傳送存活確認客戶端無響應即主動關閉會話的次數
ClientAliveCountMax 8888
# 保持會話
TCPKeepAlive yes
EOF

# systemd也無所謂,會自動重定向到systemctl restart sshd
service sshd restart

(其實也不太確定是不是TCPKeepAlive起了作用,因為我現在註釋掉ssh也沒見斷開,未生效只是阿里雲系統故障?)