Hi there, So I created a patch that makes ssh behave more like sudo. You connect to a host typing your password, you quit, you connect again and you are let in immediately. If you wait for too long you have to type your password again. It works if you have a ControlPath, ControlMaster is auto, ControlPersist is yes and ControlTimeout is for example 5m. This will make a master when you quit your shell, and it will exit if no data has passed through for 5 minutes. You can find it here: https://bugzilla.mindrot.org/show_bug.cgi?id=1330#c5 It works really well as long as you exit by closing your shell. If you exit by ~. or closing your terminal window, the daemonizing code doesn't run. Can someone please explain to me how client_channel_closed() is called upon normal termination? I have a hard time gleaning it from the code. I'm thinking to let the connection be daemonized when quit_pending is true in the client loop, but I'm also not sure if that catches all non-fatal exits that happen to ssh. Any comments? Note that in the bug Damien proposes to fork the master first, before running the real session. However, that means that if creating a master connection fails, the whole ssh connection fails and it is no longer a drop-in script speedup. I also just realized that I want the master connection to idle for 5 minutes, but wait forever when a client is connected. That means setting the timeout to 0 when a client connects and resetting it to the control_timeout when the last client leaves. Right? Thanks for any comments and pointers, Wout.