PuTTY SSH session timeout
A value of 300 should suffice in most cases. (5 minutes.) This causes PuTTY to send SSH null packets to the remote host periodically, so that the session doesn't time out.
Note that we don't want the SO_KEEPALIVE option lower on that page. That is a much lower-level mechanism which is best used only when the application-level protocol doesn't have its own keepalive mechanism. SSH does, so we shouldn't use TCP keepalives in this case.
There are other things that can cause connections to drop, but this is a solid first thing to try. If it doesn't work, you'd need to look into these other things: VPN timeouts, router timeouts, settings changes on the remote SSH server, flaky connections, etc.