How to setup port redirection after a ssh connection has been opened?

I’m using openssh on both client and server. I know I can run ssh -L or ssh -R to setup some port redirections over ssh. However, since they are command-line parameters, such redirections must be written before the connection is opened.

Can I setup port redirections on-the-fly using the command-line ssh client?

When I used the PuTTY ssh client, I could interactively setup a port redirection while a connection was already opened, without dropping nor reconnecting, thus I know it is technically possible.

If you’re using the SSH command line, and you haven’t switched the escape character feature off, then you can type ~C after a newline to open a mini-console on the ssh client. Then type -L port:host:port or -R port:host:port or -D port as you would on the command line to add a redirection, or -KR port to remove a redirection.

A more flexible method to set up redirections without redoing the authentication is to start the first ssh client as a master (-M or -o ControlMaster=auto) and subsequent clients as slaves (-S or -o ControlMaster=auto). The slaves tunnel through the connection established by the master. You may need to set ControlPath on the command line or in your ~/.ssh/config; see the description of the options in the ssh_config man page for more information.