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