Adding port forwardings programmatically on a ControlMaster SSH session
Solution 1:
That's quite simple, actually. Simply add the ctl_cmd -O forward
to your existing command, thus:
ssh -M -L5555:localhost:22 remotehost
becomes:
ssh -O forward -M -L5555:localhost:22 remotehost
The ssh
man page discusses the -O ctl_cmd
option:
-O ctl_cmd
Control an active connection multiplexing master process. When the -O option is
specified, the ctl_cmd argument is interpreted and passed to the master process.
Valid commands are: “check” (check that the master process is running), “forward”
(request forwardings without command execution), “exit” (request the master to
exit), and “stop” (request the master to stop accepting further multiplexing
requests).
This, of course, assumes you've either enabled ControlMaster yes
in your ~/ssh/config
file or -M
on the command line.