Terminate SSH Connections That Hang or Become Idle

5,049

I believe the settings you are looking for are:

  ServerAliveInterval 120
  ServerAliveCountMax 2

From man ssh_config:

 ServerAliveCountMax
         Sets the number of server alive messages (see below) which may be sent
         without ssh(1) receiving any messages back from the server.  If this
         threshold is reached while server alive messages are being sent, ssh
         will disconnect from the server, terminating the session.  It is
         important to note that the use of server alive messages is very dif‐
         ferent from TCPKeepAlive (below).  The server alive messages are sent
         through the encrypted channel and therefore will not be spoofable.
         The TCP keepalive option enabled by TCPKeepAlive is spoofable.  The
         server alive mechanism is valuable when the client or server depend on
         knowing when a connection has become inactive.

         The default value is 3.  If, for example, ServerAliveInterval (see
         below) is set to 15 and ServerAliveCountMax is left at the default, if
         the server becomes unresponsive, ssh will disconnect after approxi‐
         mately 45 seconds.

 ServerAliveInterval
         Sets a timeout interval in seconds after which if no data has been
         received from the server, ssh(1) will send a message through the
         encrypted channel to request a response from the server.  The default
         is 0, indicating that these messages will not be sent to the server.
Share:
5,049

Related videos on Youtube

arnpry
Author by

arnpry

Updated on September 18, 2022

Comments

  • arnpry
    arnpry over 1 year

    I have come across some instances where an SSH connection on my Linux OS will become idled, freezing and staying open. Eventually, this causes a fork bomb and the following error messages:

    /etc/profile.d/locallib.sh: fork: retry: No child processes
    /etc/profile.d/locallib.sh: fork: Resource temporarily unavailable
    rsync: connection unexpectedly closed (0 bytes received so far) [sender]
    rsync error: unexplained error (code 254) at io.c(226) [sender=3.1.1]
    

    Will setting the following configurations in ~/.ssh/ssh_config prevent these idled SSH connections?

    Host *
    ClientAliveCountMax 3
    ClientAliveInterval 0
    
    • Daniel B
      Daniel B over 4 years
      Those are sshd_config options, not client options. Are you concerned about incoming connections or outgoing connections. Are you sure they are idle? Or are they hanging? You should investigate the actual error because it’s definitely not normal.
    • Daniel B
      Daniel B over 4 years
      Check this question.