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
解决此问题有三种方法:
方案一:客户端编辑'/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表示服务器发出请求后客户端没有响应的次数达到一定值, 就自动断开. 正常情况下, 客户端不会不响应.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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 重磅开源!
· 字符编码:从基础到乱码解决