Linux 下 SSH 遠程超時解決方案
今天突然看到一個問題說是如何解決SSH遠程超時的問題。
找了一點資料。用於解決這個需求~
第一種:OpenSSH 配置文件設置
位於112行的 "ClientAliveInterval "以及位於113行的"ClientAliveCountMax"意義解釋如下:
- ClientAliveInterval:即The length of time Server Sent Client ,服務器發給客戶端時間間隔。
- ClientAliveCountMax:即Server Sent Client NOT REPLY,服務器發給客戶端,客戶端無響應。
倆行,簡單說就是:一個決定多久找你,一個決定找你次數。
注意要重啟SSH服務才能生效。如果上種你覺得不能理解或者不能體現水平。看下面這種~
第二種: Shell 腳本編寫實現永不超時
首先,欣賞這行代碼:
1、#!/usr/bin/expect
告訴操作系統腳本里的代碼使用那一個shell來執行
2、set timeout 60s
使用了set命令設置了超時時間為60s。
3、spawn ssh user@host
首先spawn是expect內部命令。作用就是給ssh新進程創建新expect,用來傳遞交互指令也實現了讓expect控制的用處!
4、interact
交互命令,用來打開用戶與產生進程之間通信的命令。
5、send
用於expect 腳本正在監控的進程生成輸入。send合並選項以發送給指定的產生的過程"-i",緩慢地發送"-s"(在串行通信中,為了不使緩沖區溢出)
關於expect:
export命令用於將shell變量輸出為環境變量,或者將shell函數輸出為環境變量,同時它也可以傳遞。說到底就是一個腳本語言,可以幫助系統管理員進行自動終端交互的好朋友.
第三種:環境變量臨時改變
同樣你也可以寫入$HOME/.profile文件,永久生效!
最后:
你來想想,我們還有第四種嗎?想想服務器要檢測客戶端還活着沒,客戶端能看些啥?
試試“ping”吧,也許你還有第四種~