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表示服务器发出请求后客户端没有响应的次数达到一定值, 就自动断开. 正常情况下, 客户端不会不响应.
posted @   陳聽溪  阅读(7792)  评论(1编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示