SSH Session Timeout – TCP Keepalive
In case your ssh connection is permanently disconnected in idle state, you can enable TCP-Keepalive either on the ssh server or the client or on both.
To enable TCP-Keepalive on the ssh server, you can comment out the following line in /etc/ssh/sshd_config
TCPKeepAlive yes
![](https://blog.matrixpost.net/wp-content/uploads/2021/09/tcp_keepalive01.png)
To enable TCP-Keepalive on the Linux client system wide, you can edit the /etc/ssh/ssh_config file and add the following entry
ServerAliveInterval 15
15 -> timeout interval in seconds after which if no data has been received from the server, ssh will send a message through the encrypted channel to request a response from the server.
![](https://blog.matrixpost.net/wp-content/uploads/2021/09/tcp_keepalive05.png)
If you want to enable this only for a specific user, you can add the following lines into the user’s ssh config file located in /home/<username>/.ssh/config or only for the actual user by ~/.ssh/config.
If the config file doesn’t exists, simply create it.
Host *
ServerAliveInterval 15
To enable TCP-Keepalive on the client (Putty), you can check Enable TCP keepalives (SO_KEEPALIVE option) as follows and further set the seconds to send null packets to the server to keep the session active.
![](https://blog.matrixpost.net/wp-content/uploads/2021/09/tcp_keepalive04.png)
For WinSCP use the following settings in Advanced for the specific ssh connection.
Sending of null SSH packets
![](https://blog.matrixpost.net/wp-content/uploads/2021/09/tcp_keepalive03.png)