ssh超時(ssh長連接ClientAliveCountMax)


http://yunwei.blog.51cto.com/381136/432672

平時我們通過終端連接服務器時,當鼠標和鍵盤長時間不操作,服務器就會自動斷開連接,我們還的需要重新連接,感覺很麻煩,總結一下解決此問題的方法
方法一、
修改/etc/ssh/sshd_config配置文件,找到ClientAliveCountMax(單位為分鍾)修改你想要的值,
執行service sshd reload 
方法二、
找到所在用戶的.ssh目錄,如root用戶該目錄在:
/root/.ssh/
在該目錄創建config文件
vi /root/.ssh/config
加入下面一句:
ServerAliveInterval 60
保存退出,重新開啟root用戶的shell,則再ssh遠程服務器的時候,
不會因為長時間操作斷開。應該是加入這句之后,ssh客戶端會每隔一
段時間自動與ssh服務器通信一次,所以長時間操作不會斷開。
方法三、
修改/etc/profile配置文件
# vi /etc/profile
增加:TMOUT=1800
這樣30分鍾沒操作就自動LOGOUT
方法四、
利用expect 模擬鍵盤動作,在閑置時間之內模擬地給個鍵盤響應,將下列代碼保存為xxx,然后用expect執行
#!/usr/bin/expect  
set timeout 60  
spawn ssh user@host   
      interact {          
            timeout 300 {send "\x20"}  
      } 
expect xxx
接着按提示輸入密碼就可以了,這樣每隔300秒就會自動打一個空格(\x20),具體的時間間隔可以根據具體情況設置。
方法五、
如果你在windows下通過工具連接,可以設置為
secureCRT:選項---終端---反空閑 中設置每隔多少秒發送一個字符串,或者是NO-OP協議包
putty:putty -> Connection -> Seconds between keepalives ( 0 to turn off ), 默認為0, 改為300.

本文出自 “繼續奮斗” 博客,請務必保留此出處http://yunwei.blog.51cto.com/381136/432672

 

http://www.centoscn.com/CentOS/2013/1208/2209.html

配置文件/etc/ssh/sshd_config包含這一系列單行聲明,每行聲明均以某個關鍵字(不區分大小寫)開頭,其后跟着空格,最后是參數(區分大小寫)。想要這些修改生效,必須重新加載sshd服務器。

AllowUsers userlist

 

userlist是一個由空格隔開的用戶名列表,指定哪些用

戶允許使用sshd登錄。這個列表可以含有通配符*和?。

可以用user或者user@host的形式來指定用戶。如果使用的

是第二種格式的話,那么要確保將host指定為hostname命令

所返回的值。如果沒有指定這項聲明,那么任何能夠在本地

登錄的用戶都能夠使用OpenSSH客戶端登錄。

ClientAliveCountMax n

 

n指定sshd從客戶端斷開連接之前,在沒有接收到響應時能夠

發送client-alive消息的條數。參見ClientAliveInterval。默認值為3。

ClientAliveInterval n

 

如果n秒之內沒有接收到客戶端的消息,就通過加

密通道發送一條信息。參見ClientAliveCountMax。默認值為0,

意味着不發送消息。

這項聲明通過加密通道(應用層,參見《基礎篇》10.1.7節)

傳遞消息,不容易受到IP欺騙攻擊(參見術語表)。它區別於

TCPKeepAlive,后者使用TCP的keepalive選項(傳輸層,

參見《基礎篇》10.1.7節),容易受到IP欺騙攻擊。

DenyUsers userlist

 

userlist是一個由空格隔開的用戶名列表,指定哪些用戶不

可以使用sshd登錄。這個列表可以含有通配符*和?。

可以用user或者user@host的形式來指定用戶。如果使用

的是第二種格式的話,那么要確保將host指定為hostname命令所返回的值。

HostbasedAuthentication yes | no

 

如果設置為yes,則嘗試進行rhosts和/etc/hosts.equiv身份驗證。

要想提高系統安全性,請將其設置為no(默認值)。

IgnoreRhosts yes | no

 

忽略.rhosts和.shosts身份驗證文件。不會影響到

/etc/hosts.equiv和/etc/ssh/shosts.equiv身份驗證文件的使用。

要想提高系統安全性,請將其設置為yes(默認值)。

LoginGraceTime n

 

在斷開連接之前,等待n秒以便用戶登錄到服務器。

如果值為零的話,表示沒有時間限制。默認值為120秒。

LogLevel val

 

指定日志消息的詳細程度。val的值從QUIET、FATAL、

ERROR、INFO和VERBOSE中選取。默認為INFO。

PasswordAuthentication

 

允許用戶使用口令進行身份驗證。要想提高系統安全性,

請設置自動登錄(參見8.4.4節),並將該聲明設置為no。默認值為yes。

PermitEmptyPasswords

 

允許用戶登錄到口令為空的賬號。默認值為no。

PermitRootLogin

 

允許root使用OpenSSH客戶端登錄。考慮到連接到因特網的

典型系統經常遭受到的強力攻擊次數,將該聲明設置為no是

很必要的。(如果root賬號被鎖定,如何設置這個聲明

就不是一個問題。)默認值為yes。

Port num

指定sshd服務器偵聽端口num。將num改成非標准端口

可以提高安全性。默認端口為22。

StrictModes yes | no

 

檢查用戶主目錄和文件的模式和所有權。如果目錄或文件

可以被任何一個除了所有者之外的人寫入的話,那么

任何一個除了所有者之外的人登錄將失敗。出於安全方面的考慮,

請將其設置為yes(默認值)。

TCPKeepAlive yes | no

 

如果設置為yes(默認值),那么周期性地檢查連接是否存活。

當客戶端崩潰或者由於其他原因導致連接死掉,那么該項檢

查會讓ssh或scp連接斷開,即便只是臨時性的故障。

這個選項在傳輸層(TCP)測試連接(參見《基礎篇》

10.1.7節)。將該參數設置為no,會導致服務器不去檢查連接是否存活。

這項聲明使用TCP的keepalive選項,該項未被加密,

容易受到IP欺騙攻擊(參見術語表)。對於不易

受到IP欺騙攻擊的替代技術請參考ClientAliveInterval(參見8.4.6節)。

X11Forwarding yes | no

 

若將該選項設置為yes,則允許X11轉發。默認值為no,

但是Ubuntu Linux將X11Forwarding設置為yes。要想讓

可信的X11轉發能夠工作,那么~/.ssh/config或者

/etc/ssh/ssh_config客戶端配置文件(參見8.3.7節)

中也必須將ForwardX11聲明和ForwardX11Trusted聲明設置為yes。

更多信息請參見(參見8.6節)節的“X11轉發”部分。

 

http://blog.csdn.net/zhanglingge/article/details/21379091

方法有兩種:

1.修改服務器sshd_config文件

2.修改使用者CRT的鏈接每隔多長時間發送一個字符串

————————————–

1、修改/etc/ssh/sshd_config文件,將 ClientAliveInterval 0和ClientAliveCountMax 3的注釋符號去掉,將ClientAliveInterval對應的0改成60,
ClientAliveInterval指定了服務器端向客戶端請求消息的時間間隔, 默認是0, 不發送.而ClientAliveInterval 60表示每分鍾發送一次, 然后客戶端響應, 
這樣就保持長連接了.ClientAliveCountMax, 
使用默認值3即可.ClientAliveCountMax表示服務器發出請求后客戶端沒有響應的次數達到一定值, 就自動斷開. 正常情況下, 客戶端不會不響應.

service sshd reload 生效
————-
設置ssh超時時間

修改自己 HOME 目錄下的.bash_profile文件,加上
export TMOUT=1000000 (以秒為單位)
然后運行 source .bash_profile

/etc/ssh/sshd_config中加入
ClientAliveInterval=60

表示每一分鍾,sshd都和ssh client打個招呼,看看他還在不在,要不然可能網絡連接會丟失。

注意:設置以后一定要退出遠程重新登陸一次。

 

怎樣讓服務器和一定時間沒有任何操作的終端自動斷開連接?
# vi /etc/profile
增加:
TMOUT=1800
這樣30分鍾沒操作就自動LOGOUT

—————————-

第二種方法:

解決方法:
既然會斷開超時的空閑連接,那么我們就應該讓客戶端與服務器之間的連接“忙”起來;

從服務器方面入手:
修改/etc/ssh/sshd_config配置文件 ClientAliveInterval 300(默認為0)
這個參數的是意思是每5分鍾,服務器向客戶端發一個消息,用於保持連接
service sshd reload 生效

從客戶端入手:
上面是配置需要服務器權限,如果沒有服務器權限則可以使用這個方法,其思想是:客戶端向服務器發一個消息,用於保持連接
secureCRT在選項 終端 反空閑 中設置每隔多少秒發送一個字符串,或者是NO-OP協議包
putty:putty -> Connection -> Seconds between keepalives ( 0 to turn off ), 默認為0, 改為300.

=========================================

http://www.unixdo.com/Unix_Linux/ClientAliveCountMax.html

http://www.ajiex.com/post/bi-mian-sshchao-shi-zi-dong-duan-kai-lian-jie-write-failed-broken-pipe

避免ssh超時自動斷開連接Write failed:Broken pipe
 
 

用ssh登錄服務器時,長時間不操作,沒有數據傳輸,會出現連接斷開被服務器踢出的情況。常見的提示如下:

Write failed: Broken pipe

解決此問題有三種方法:

方案一:客戶端編輯'/etc/ssh/ssh_config'文件,取消以下兩行的注釋

ServerAliveInterval 60

ServerAliveCountMax 3

此后該系統里的用戶連接ssh時,每60秒就會發一個KeepAlive請求,以上兩行代表允許超時60*3=180秒,避免被踢。

方案二:在服務器端設置(會影響安全性),編輯'/etc/ssh/sshd_config'文件:

ClientAliveInterval 60

ClientAliveCountMax 5

ClientAliveInterval 60表示每分鍾發送一次, 然后客戶端響應, 這樣就保持長連接了.

ClientAliveCountMax, 使用默認值3即可.ClientAliveCountMax表示服務器發出請求后客戶端沒有響應的次數達到一定值, 就自動斷開.

然后重啟OPENSSH服務器后該項設置就會生效。每一個連接到此服務器上的客戶端都會受其影響。所以建議用客戶端設置。

方案三:如果只想讓當前的ssh保持連接,可以使用以下的命令:

ssh -o ServerAliveInterval=60 user@sshserver

======================================

http://www.cnblogs.com/jamesbd/p/3988308.html

http://blog.bccn.net/%E9%9D%99%E5%A4%9C%E6%80%9D/13473

    1. echo $TMOUT
      如果顯示空白,表示沒有設置, 等於使用默認值0, 一般情況下應該是不超時. 如果大於0, 可以在如/etc/profile之類文件中設置它為0.
    2. 修改/etc/ssh/sshd_config文件,將ClientAliveInterval 0和ClientAliveCountMax 3的注釋符號去掉,將ClientAliveInterval對應的0改成60,ClientAliveInterval指定了服務器端向客戶端請求消息 的時間間隔, 默認是0, 不發送.而ClientAliveInterval 60表示每分鍾發送一次, 然后客戶端響應, 這樣就保持長連接了.ClientAliveCountMax, 使用默認值3即可.ClientAliveCountMax表示服務器發出請求后客戶端沒有響應的次數達到一定值, 就自動斷開. 正常情況下, 客戶端不會不響應.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM