十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
今天给大家说说Linux系统SSH超时断开的处理方法!解决方法:通过修改/etc/ssh/sshd_config中的配置解决自动断开的问题。下面是要修改的两个配置项的含义:“ClientAliveInterval指定了服务器端向客户端请求消息的时间间隔, 默认是0, 不发送。而ClientAliveInterval 60表示每分钟发送一次, 然后客户端响应, 这样就保持长连接了。这里比较怪的地方是:不是客户端主动发起保持连接的请求(如FTerm, CTerm等),而是需要服务器先主动。另外,至于ClientAliveCountMax, 使用默认值3即可.ClientAliveCountMax表示服务器发出请求后客户端没有响应的次数达到一定值, 就自动断开。正常情况下, 客户端不会不响应。“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 验证修改结果grep“ClientAlive” sshd_configdiff sshd_configsshd_config.bak5 重启服务service sshdrestart上面就是Linux SSH超时断开的解决方法介绍了,通过本文的设置,不管SSH是否超时都不会断开,如果需要自动断开可再设置回来。
成都创新互联主营维西网站建设的网络公司,主营网站建设方案,APP应用开发,维西h5小程序设计搭建,维西网站营销推广欢迎维西等地区企业咨询
对所有用户设置自动注销功能:
首先,以root用户登录系统,输入 vi /etc/profile 命令,编辑profile文件。
查找TMOUT,若没有,则可以在文件最后添加如下语句:
TMOUT=300
export TOMOUT
如果查找到了,直接设置时间。
300表示自动注销的时间为300秒。
编辑好文件后,保存,退出,重新登录,设置生效。
一、有个工具叫screen,可以虚拟终端,通过命令screen -S name 来创建一个名为name的虚拟终端,这样即使终端超时自动断开,再登录到系统之后只需要screen -r name就可以继续连接到刚才创建的虚拟终端,且所有的操作都会继续不会中断。
二、远程工具可以进行相关的设置,比如secretcrt这个工具就可以设置每10秒操作一下,这样就不会中断。
一个方法是:信号+子进程的方法...显得比较繁琐...
定义一个全局变量,作为标志位
fork,让子进程去执行系统调用...
然后父进程调用alarm,设置周期为20秒,这样每隔20秒会收到一个SIGALRM;
然后注册SIGALRM和SIGCHILD这两个信号的处理函数,可以让其中一个信号处理函数去修改全局变量..(子进程返回时候父进程会收到一个SIGCHILD信号)
再然后,调用sigsuspend让父进程休眠,设置好信号掩码,保证两个信号可以唤醒父进程--SIGALRM和SIGCHILD。
然后就是你父进程被某个信号唤醒了...此时就判断是怎么被唤醒(用刚才那个全局变量判断)...要是SIGALRM,就说明超时了.要是SIGCHILD就说明没超时...后面就是你自己的事情了.两种情况分别处理呗..
当然,另外一种简单的方法(比较耗费CPU)...还是需要子进程...
先fork,然后调用waitpid,设置为立即返回,这样可以立刻判断子进程的状态,然后若时间没超出你的要求,就继续waitpid,直到时间超出20秒或者子进程在时限之前返回...这样轮询显然非常浪费CPU...(如何判断可以 man waitpid)
别的方法...我也想不出来了...
vim /etc/ssh/sshd_config
找到ClientAliveInterval 参数,如果没有就自己加一行。
ClientAliveInterval 参数的数值是秒,比如你设置为540,就是9分钟.
ClientAliveInterval 540
对于ClientAliveCountMax
指如果发现客户端没有相应,则判断一次超时,这个参数设置允许超时的次数,比如10。
ClientAliveInterval 540
ClientAliveCountMax 10;
则代表允许超时 5400秒 = 90分钟。
方法2:配置客户端
1 linux下的ssh命令
vim /etc/ssh/ssh_config
然后找到里面的ServerAliveInterval 参数,如果没有你同样自己加一个就好了。参数意义相同,都是秒数,比如9分钟:
ServerAliveInterval 540
2 SecureCRT
设置反空闲,如下图所示
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 #进程不存在了就退出循环
let timer-=1
done
[ $flag -eq 1 ] kill -9 $(ps -aux | awk '/ bash$/{print $1}')