Linux是一個非常好用、兼具效能、靈活度高的作業系統, 唯一的缺點就是學習曲線較為陡峭, 一開始難以入門, 但假若學會了, 對於我們的作業效率勢必事半功倍, 尤其是軟體工程師、IT人員…。
過程中難免遇到一些零零總總的狀況, 不過沒關係! 一項項慢慢解決即可。
有一天,工程師小明在進行遠端連線SSH作業時,發現一件奇怪的事情,明明就是跟朋友聚餐一下,兩個小時後回來,咦! 奇怪, 怎麼我剛剛遠端連線到伺服器的終端機都不動了!!! WTF… 不會是壞掉了吧! 這時候小明發揮工程師的精神,一定要實事求是,將問題給找出來…, 那麼我們就來幫小明一把唄…。
主要是SSH預設會有一個檢查機制,假如說一段時間內,客戶端沒有發送任何封包請求來往時,伺服端就會視為這一個連線是失效的,因此會強制中斷連線,避免占著茅坑不拉屎的狀況,但不必擔心,這是有幾個解決方法的,就在底下,請根據需求選取一種解決方案吧!
由於連線的過程中會有心跳機制, 伺服端會在一定時間內需要收到Client的封包, 否則就視為拒絕連線的對象。
因此我們可以在Client端配置固定時間向伺服端發送封包, 以確保我們的連線無虞。
# 編輯客戶端的ssh連線配置
vim ~/.ssh/config
# 每60秒發送一次keep alive封包
ServerAliveInterval 60
# 斷開時重新連接的次數
ServerAliveCountMax 5
我們也可以延長伺服端的時效性, 以及給予更寬鬆的最大延時次數。
# 編輯伺服端的連線配置
vim /etc/ssh/sshd_config
# 將超時設定為600秒(10分鐘), 最大允許3次
ClientAliveInterval 600
ClientAliveCountMax 3
如果我們不希望這種未逾時的連線成為常態的配置時, 我們可以在連線時指定參數, 告訴這次連線每60秒發送一次封包, 避免被中斷。
ssh -o ServerAliveInterval=60 user@remote_host
如果您需要在SSH連接中保持長時間運行的任務,但不希望被空閒超時終止,可以使用tmux或screen工具。這些工具可以創建會話,即使斷開SSH連接,任務也會在後台繼續運行。這樣,您可以隨時重新連接到會話並恢復工作。
Linux系統雖然相對門檻較高, 但使用者也都非常樂意分享遇到的狀況以及處理方法,所以基本上都不用害怕這個系統, 而且處理效能相對較佳, 尤其我們開發雲服務的應用程式時就非常需要Linux的技能, 不妨好好的學習一番, 跟上時代的趨勢。
喜歡撰寫文章的你,不妨來了解一下:
Web3.0時代下為創作者、閱讀者打造的專屬共贏平台 — 為什麼要加入?
歡迎加入一起練習寫作,賺取知識