I'm trying to create multiplexed ssh connections for a series of commands that run in succession, then after the series of commands is finished, close the multiplex session.

According to the documentation, the first connection should start the control master:

ssh -o "ControlMaster=auto" -S /home/justin/.ssh/sockets/multiplex_ssh.sock justin@ "uptime"

Then the rest of the commands just need to pass:

ssh -S /home/justin/.ssh/sockets/multiplex_ssh.sock justin@ "free -m"
ssh -S /home/justin/.ssh/sockets/multiplex_ssh.sock justin@ "hostname"
ssh -S /home/justin/.ssh/sockets/multiplex_ssh.sock justin@ "date"

Finally, to close the multiplex ssh session, I should be able to do:

ssh -O exit -S /home/justin/.ssh/sockets/multiplex_ssh.sock justin@

Unfortunately, the first ssh command running ControlMaster=auto does not keep a socket active in the directory /home/justin/.ssh/sockets when passing a command to ssh. It instead immediately closes the socket.

How is this possible?


It looks like you forgot to set ControlPersist. If not set, then the master connection will not remain open if that first session is closed.

For example you can set in your $HOME/.ssh/config:

ControlPersist 600
|improve this answer|||||
  • I can't use a ssh config file, I have to specify this on the command line arguments to ssh. I don't know a given amount of time, should I just set the time to like 1 hour, and then do the exit at the end? – Justin Aug 3 '15 at 1:46
  • 1
    I can use ControlPersist yes – Justin Aug 3 '15 at 1:48
  • That should be fine, I think. – Michael Hampton Aug 3 '15 at 1:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.