zoukankan      html  css  js  c++  java
  • SSH会话连接超时问题

    目前大多数ssh服务是运行在Linux系统上的sshd服务。当访问终端在windows上时,各终端软件,如,putty,SecureCRT等,大多支持设置向服务器端自动发送消息,来防止终端定期超时。其实,服务器端也支持类似的设置,从服务器的角度防止链接超时。并且,当终端在Ubuntu 等Linux系统上时,客户端也可进行类似设置。
    下面我们就介绍三种防止超时被踢出的方法,后两种情况的设置方法以及通过设置shell变量来达到此目的的方法:

    1、 配置服务器

    #vi /etc/ssh/sshd_config

    1)找到 ClientAliveInterval参数,如果没有就自己加一行
    数值是秒,比如你设置为120 ,则是2分钟
    ClientAliveInterval 120

    2)ClientAliveCountMax
    指如果发现客户端没有响应,则判断一次超时,这个参数设置允许超时的次数。如3 、5等自定义
     
    修改两项参数后如下:
    ----------------------------
    ClientAliveInterval 120
    ClientAliveCountMax 3   ### 0 不允许超时次数
     
    修改/etc/ssh/sshd_config文件,将 ClientAliveInterval 0和ClientAliveCountMax 3的注释符号去掉,将ClientAliveInterval对应的0改成60,没有就自己输入。
    ClientAliveInterval指定了服务器端向客户端请求消息 的时间间隔, 默认是0, 不发送.而ClientAliveInterval 60表示每分钟发送一次, 然后客户端响应, 这样就保持长连接了.ClientAliveCountMax, 使用默认值3即可.ClientAliveCountMax表示服务器发出请求后客户端没有响应的次数达到一定值, 就自动断开. 正常情况下, 客户端不会不响应.
    重新加载sshd服务。退出客户端,再次登陆即可验证。
     
    3)重启sshd service
    sudo /etc/init.d/ssh restart


    2、 配置客户端

    #vi  /etc/ssh/ssh_config
    然后找到里面的
    ServerAliveInterval
    参数,如果没有你同样自己加一个就好了
    参数意义相同,都是秒数,比如5分钟等

    ServerAliveInterval 300

    下面是man sshd_config获取的描述信息

     ClientAliveInterval
                 Sets a timeout interval in seconds after which if no data has
                 been received from the client, sshd will send a message through
                 the encrypted channel to request a response from the client.
                 The default is 0, indicating that these messages will not be
                 sent to the client.  This option applies to protocol version 2
                 only.

     ClientAliveCountMax
                 Sets the number of client alive messages (see above) which may
                 be sent without sshd receiving any messages back from the
                 client.  If this threshold is reached while client alive mes-
                 sages are being sent, sshd will disconnect the client, terminat-
                 ing the session.  It is important to note that the use of client
                 alive messages is very different from TCPKeepAlive (below).  The
                 client alive messages are sent through the encrypted channel and
                 therefore will not be spoofable.  The TCP keepalive option
                 enabled by TCPKeepAlive is spoofable.  The client alive mecha-
                 nism is valuable when the client or server depend on knowing
                 when a connection has become inactive.

                 The default value is 3.  If ClientAliveInterval (above) is set
                 to 15, and ClientAliveCountMax is left at the default, unrespon-
                 sive ssh clients will be disconnected after approximately 45
                 seconds.

    3、echo export TMOUT=1000000 >> /root/.bash_profile; source .bash_profile
          Linux 终端的shell环境中通过设置环境变量TMOUT来阻止超时。如果显示空白,表示没有设置, 等于使用默认值0, 一般情况下应该是不超时. 如果大于0, 可以在如/etc/profile之类文件中设置它为0.
    Definition: TMOUT: If set to a value greater than zero, the value is interpreted as the number of seconds to wait for input after issuing the primary prompt. Bash terminates after waiting for that number of seconds if input does not arrive

  • 相关阅读:
    常见的设计模式:单例模式、工厂模式、观察者模式、装饰模式与适配器模式
    WCF、Web API、WCF REST、Web Service之区别
    Asp.Net Web API VS Asp.Net MVC
    sql server 2008 评估期已过期解决办法
    IIS6.0中布署MVC站点
    SQL Server类型与C#类型对应关系
    经纬度 lbs 笔记
    C#实现用Newtonsoft.Json 4.5.11解析人人网院校信息并获取院系信息
    当前上下文中不存在名称"Session"
    [ASP.NET]HttpCookieCollection to CookieCollection的最简单方法
  • 原文地址:https://www.cnblogs.com/lxwphp/p/7730956.html
Copyright © 2011-2022 走看看