解决Centos使用ssh连接自动断开

在使用Centos7的时候,经常在一段时间没有操作之后就自动断掉了,然后重新连接之后就可能失去了当前操作场景,那么如何才能保证我们即使长时间不操作也会一直保持连接状态,往下看。

  1. 第一种方法也是网上到处都能搜索到的,修改/etc/ssh/sshd_config文件

    使用命令打开/etc/ssh/sshd_config文件:vim /etc/ssh/sshd_config,修改两个参数ClientAliveIntervalClientAliveCountMax,这两个参数控制了客户端的存活检测间隔和失败检测的最大次数,如果超过了这个次数就断开客户端的连接,默认情况下这两个是未开启的,将其修改为60和5,值自己定

    1
    2
    ClientAliveInterval 100
    ClientAliveCountMax 15

    修改完配置之后重启sshd服务:

    1
    systemctl restart sshd

    使用该方法修改之后如果还是经常自动断开,那你就看第二种

  2. 第二种来自于linvirtshell,是我实际遇到的情况

    在服务器自动断开的时候,控制台输出了一个关键语句:

    image-20201215092855460

    哦吼~这句话很关键喔,尤其是auto-logout,在linvirtshell上有这么一句话:

    The ssh “timed out waiting for input: auto-logout” messages is generated by ssh upon reaching a auto-logout after an inactivity time specified by the TMOUT environment variable. If this variable is not set your session will not be auto-logged out due to inactivity. If the environment variable is set, your session will be automatically closed/logged out after the amount of seconds specified by the TMOUT variable.

    大致意思是Linux维护了一个TMOUT的环境变量,该环境变量的目的是在ssh客户端在指定时间未活动的话,就自动断开该客户端的连接,单位是,那我们输出一下该环境变量看看是不是这货在搞怪。

    1
    2
    [root@ci034 ~]# echo $TMOUT
    180

    果然,180秒未活动就自动断开连接,结合之前每次断开的时间间隔,就是这货在作怪了,那么我们直接修改这个参数试试,设置为30分钟不过期

    1
    export TMOUT=1800

    经验证,确实有效,那么将其设置到/etc/profile文件中(如果文件中已经有配置了,修改时间即可)

    如果想关闭自动断开,想永久不断开的话(不推荐),就从环境变量里面移除掉该参数。