SSH鏈接自動斷開問題探究

本身關於SSH鏈接斷開問題的一些探究。linux


更新2018-03-12
修改sshd_config的keep alive配置沒有生效。以前確認的問題緣由非真正致使鏈接斷開的緣由。使用ssh鏈接斷開的提示信息「timed out waiting for input: auto-logout。」搜索,一篇英文文檔說明了TMOUT環境變量做用,該變量是系統檢測session空閒時間,若是TMOUT未賦值,則auto-logout功能關閉,即session不會空閒超時關閉;若是設置TMOUT的值,好比TMOUT=300,auto-logout檢測session輸入,若300s內無輸入關閉session自動退出。
TMOUT變量在如下幾個文件中會有定義:/etc/profile(全局)或./profile或./bash_profile,其中全局定義的TMOUT會被局部定義的TMOUT覆蓋。
echo $TMOUT顯示環境變量查看當前超時時間爲300s,定義在/etc/profile中,將TMOUT設置爲86400(24h),source從新讀取配置文件,新建的session 30min內無輸入也沒有關閉,至此問題解決。web


新安裝的OS,SSH配置遇到若干問題,第一個問題:root登陸失敗,用web登陸正常,ssh登陸提示denied,上網搜尋ssh配置項「PermitRootLogin」默認是no,修改成yes後重啓SSH服務,解決。
第二個問題至關棘手,SSH鏈接幾分鐘未操做,會自動斷開,上網搜索連篇累牘關於keep alive的說明,所有都是配置「ClientAliveInterval」和「ClientAliveCountMax」,修改後重啓SSH,沒有任何用處,一段時間不操做,鏈接該斷仍是斷,懷疑網上的配置有誤。仔細想一想這麼多的文章都提到keep alive,問題應該是這裏,keep alive選項沒有生效,可能不是SSH保活機制問題,而是網絡鏈接機制問題。把sshd_config的配置從頭至尾看了一遍,發現有一個「TCPKeepAlive」的選項,搜索了該選項的說明,ClientAlive是SSH發出是加密選項,TCP Alive是協議棧發出,非加密信息,安全性下降。
同時搜索了網上ssh tcp keep alive,有個博文提到,linux的防火牆會檢測網絡鏈接,若是沒有流量,觸發規則防火牆會斷開TCP鏈接,TCP鏈接終止後,SSH客戶端檢測鏈接異常天然沒法運行,這纔是client keep alive沒法生效的根本緣由。
從安全角度來講,SSH鏈接空閒後自動斷開,是合理的,對於開發者此行爲不方便調試,探究到根本緣由,咱們須要作的就是適應場景。
手上有幾臺服務器,CENTOS的服務器沒有相似問題,當前這個小衆的服務器纔有,對比了兩個OS的SSH默認配置,CENTOS沒有配置keep alive但不會空閒斷開。防火牆相關的配置網上沒找到,後續碰到再研究。安全

相關文章
相關標籤/搜索