I do almost all of my work remotely on a server. I as well as my colleagues have a ton of SSH sessions open at all times. And I have seen them getting frustrated when they take a break and come back to see the terminal tab not responding.
This is very easy to fix though. We just have to tell the SSH daemon at the server or the client in our system to send packets at a specific interval to avoid that.
In the config of OpenSSH server in
/etc/ssh/sshd_config, add the following:
ClientAliveInterval 300 ClientAliveCountMax 3
It will make sure that the OpenSSH server keeps the all the connections alive with no effort on the part of the clients.
Add the following lines to any of the SSH configs in your system:
Host * ServerAliveInterval 300 ServerAliveCountMax 3
You should add this to
/etc/ssh/ssh_config for system-wide change or
~/.ssh/config to apply just for the current user.
You can replace
Host * with a hostname to only apply the configuration for connections to that specific server. e.g.
Host *abhnv.dev ServerAliveInterval 300 ServerAliveCountMax 3
ServerAliveInterval 300 or
ClientAliveInterval 300 means that the server or the client will send a null packet to the other end every 300 seconds.
ServerAliveCountMax 3 or
ClientAliveCountMax 3 means that the server or the client will try 3 times before giving up.
Originally posted at https://abhnv.dev/blog/2020-05-24-ssh-keep-alive/