今天給大家說說Linux系統(tǒng)SSH超時斷開的處理方法!解決方法:通過修改/etc/ssh/sshd_config中的配置解決自動斷開的問題。下面是要修改的兩個配置項的含義:“ClientAliveInterval指定了服務(wù)器端向客戶端請求消息的時間間隔, 默認是0, 不發(fā)送。而ClientAliveInterval 60表示每分鐘發(fā)送一次, 然后客戶端響應(yīng), 這樣就保持長連接了。這里比較怪的地方是:不是客戶端主動發(fā)起保持連接的請求(如FTerm, CTerm等),而是需要服務(wù)器先主動。另外,至于ClientAliveCountMax, 使用默認值3即可.ClientAliveCountMax表示服務(wù)器發(fā)出請求后客戶端沒有響應(yīng)的次數(shù)達到一定值, 就自動斷開。正常情況下, 客戶端不會不響應(yīng)。“1 查看當前配置grep“ClientAlive” sshd_config#ClientAliveInterval0#ClientAliveCountMax32 備份原文件cp sshd_configsshd_config.bak3 修改配置文件sed-i “s/#ClientAliveInterval 0/ClientAliveInterval 60/g” sshd_configsed -i “s/#ClientAliveCountMax3/ClientAliveCountMax 3/g” sshd_config4 驗證修改結(jié)果grep“ClientAlive” sshd_configdiff sshd_configsshd_config.bak5 重啟服務(wù)service sshdrestart上面就是Linux SSH超時斷開的解決方法介紹了,通過本文的設(shè)置,不管SSH是否超時都不會斷開,如果需要自動斷開可再設(shè)置回來。
成都創(chuàng)新互聯(lián)主營維西網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,APP應(yīng)用開發(fā),維西h5小程序設(shè)計搭建,維西網(wǎng)站營銷推廣歡迎維西等地區(qū)企業(yè)咨詢
對所有用戶設(shè)置自動注銷功能:
首先,以root用戶登錄系統(tǒng),輸入 vi /etc/profile 命令,編輯profile文件。
查找TMOUT,若沒有,則可以在文件最后添加如下語句:
TMOUT=300
export TOMOUT
如果查找到了,直接設(shè)置時間。
300表示自動注銷的時間為300秒。
編輯好文件后,保存,退出,重新登錄,設(shè)置生效。
一、有個工具叫screen,可以虛擬終端,通過命令screen -S name 來創(chuàng)建一個名為name的虛擬終端,這樣即使終端超時自動斷開,再登錄到系統(tǒng)之后只需要screen -r name就可以繼續(xù)連接到剛才創(chuàng)建的虛擬終端,且所有的操作都會繼續(xù)不會中斷。
二、遠程工具可以進行相關(guān)的設(shè)置,比如secretcrt這個工具就可以設(shè)置每10秒操作一下,這樣就不會中斷。
一個方法是:信號+子進程的方法...顯得比較繁瑣...
定義一個全局變量,作為標志位
fork,讓子進程去執(zhí)行系統(tǒng)調(diào)用...
然后父進程調(diào)用alarm,設(shè)置周期為20秒,這樣每隔20秒會收到一個SIGALRM;
然后注冊SIGALRM和SIGCHILD這兩個信號的處理函數(shù),可以讓其中一個信號處理函數(shù)去修改全局變量..(子進程返回時候父進程會收到一個SIGCHILD信號)
再然后,調(diào)用sigsuspend讓父進程休眠,設(shè)置好信號掩碼,保證兩個信號可以喚醒父進程--SIGALRM和SIGCHILD。
然后就是你父進程被某個信號喚醒了...此時就判斷是怎么被喚醒(用剛才那個全局變量判斷)...要是SIGALRM,就說明超時了.要是SIGCHILD就說明沒超時...后面就是你自己的事情了.兩種情況分別處理唄..
當然,另外一種簡單的方法(比較耗費CPU)...還是需要子進程...
先fork,然后調(diào)用waitpid,設(shè)置為立即返回,這樣可以立刻判斷子進程的狀態(tài),然后若時間沒超出你的要求,就繼續(xù)waitpid,直到時間超出20秒或者子進程在時限之前返回...這樣輪詢顯然非常浪費CPU...(如何判斷可以 man waitpid)
別的方法...我也想不出來了...
vim /etc/ssh/sshd_config
找到ClientAliveInterval 參數(shù),如果沒有就自己加一行。
ClientAliveInterval 參數(shù)的數(shù)值是秒,比如你設(shè)置為540,就是9分鐘.
ClientAliveInterval 540
對于ClientAliveCountMax
指如果發(fā)現(xiàn)客戶端沒有相應(yīng),則判斷一次超時,這個參數(shù)設(shè)置允許超時的次數(shù),比如10。
ClientAliveInterval 540
ClientAliveCountMax 10;
則代表允許超時 5400秒 = 90分鐘。
方法2:配置客戶端
1 linux下的ssh命令
vim /etc/ssh/ssh_config
然后找到里面的ServerAliveInterval 參數(shù),如果沒有你同樣自己加一個就好了。參數(shù)意義相同,都是秒數(shù),比如9分鐘:
ServerAliveInterval 540
2 SecureCRT
設(shè)置反空閑,如下圖所示
securecrt_to
3 Putty
啟用putty keepalive
putty - Connection - Seconds between keepalives ( 0 to turn off ),默認為0,改為60。
判斷進程是否存在。示例:
timer=20?#20s定時器
flag=1?#標識進程是否存在
while?[?$timer?-gt?0?]
do
sleep?2
ps?-aux?|?grep?進程名?|?grep?-v?grep?/dev/null?#查詢進程
[?$??-ne?0?]??flag=0??break?#進程不存在了就退出循環(huán)
let?timer-=1
done
[?$flag?-eq?1?]??kill?-9?$(ps?-aux?|?awk?'/?bash$/{print?$1}')
當前文章:linux命令執(zhí)行超時,linux取消超時命令
本文地址:http://aaarwkj.com/article10/dssgcdo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、App設(shè)計、電子商務(wù)、建站公司、網(wǎng)站維護、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)