Configure OpenSSH to disconnect idle SFTP clients

How to configure sftp-server subsystem specified in /etc/ssh/sshd_config to disconnect idle SFTP clients.

Neither sshd_config manual nor nor the sftp-server manual have info to configure such parameter for the subsystem.


Solution 1:

Until OpenSSH 8.2, you could abuse ClientAliveInterval and ClientAliveCountMax 0 to disconnect idle clients:

ClientAliveInterval 60
ClientAliveCountMax 0

But this has been declared as a bug in 8.2 and is no longer working. Since 8.2, there's no way to disconnect the idle clients, only unresponsive clients.


I believe these days, most OpenSSH installations are still pre-8.2, so you might still be able to use this. But it may stop working after upgrade one day.


As @KamilMaciorowski suggested in a comment, a clever wrapper (script) over the sftp-server executable would do too. It won't even be difficult. It would ignore SSH keepalives though (what some may like, some not). And it will need the sftp-server binary (instead of the default internal-sftp), what makes it complicated to chroot the session