Nov 15 2008

Speed Up Multiple SSH Connections to the Same Server

If you run a lot of terminal tabs or scripts that all need to make OpenSSH connections to the same server, you can speed them all up with multiplexing: making the first one act as the master and letting the others share its TCP connection to the server.

If you don’t already have a config file in the .ssh directory in your home directory, create it with permissions 600: readable and writeable only by you.

Then add these lines:

Host *
   ControlMaster auto
   ControlPath ~/.ssh/master-%r@%h:%p

ControlMaster auto tells ssh to try to start a master if none is running, or to use an existing master otherwise.

ControlPath is the location of a socket for the ssh process to communicate among themselves. The %r, %h and %p are replaced with your user name, the host to which you’re connecting and the port number - only ssh sessions from the same user to the same host on the same port can or should share a TCP connection, so each group of multiplexed ssh process needs a separate socket.

To make sure it worked, start one ssh session and keep it running. Then, in another window, open another connection with the -v option:

~ ssh -v example.com echo "hi"

And, instead of the long verbose messages of a normal ssh session, you’ll see a few lines, ending with:

debug1: auto-mux: Trying existing master
hi

Pretty fast. If you have to connect to an old ssh implementation that doesn’t support multiplexed connections, you can make a separate Host section:

Host antique.example.com
   ControlMaster no

For more info, see man ssh and man ssh_config.

Jul 04 2008

sshmenu-gnome

Here is a great little gnome panel applet for organizing all your ssh sessions.
Ubuntu — Details of package sshmenu-gnome in hardy

sshmenu-gnome puts all your most frequently used SSH connections on a menu in your GNOME panel. Click on a host name to open a new gnome-terminal window with an ssh connection to the selected host. Set up options for port forwarding, etc. using the preferences dialog.

Here is a nice site that will give you an overview of sshmenu.