Making SSH Fast
In my day to day work, I frequently need to bounce to various SSH servers to see whats happening or put out a fire. Nothing drives me more insane than having to wait 5-10 seconds for SSH. So I put together the various pieces in one nice package for you. (Note: this is for mac/linux only)
First, update your
~/.ssh/config to be sure that your
Host * section has at least this in it:
Second, add this shell script to your ~/bin or wherever you keep your shell scripts:
Edit fastssh.sh and add new lines for the servers you connect to. In my above example, I have 3 servers defined “jira”, “gerrit”, and “bamboo”.
If you want to provide additional SSH arguments like port forwarding, just add them after the hostname/username.
Finally, make sure you install autossh.
Cool, what does all of this mean?
ServerAliveInterval: 30- Check that the connection is alive every 30 seconds.
ServerAliveCountMax: 2- If there are 2 consecutive keep alive failures, kill the connection.
ControlPath: ~/.ssh/master-%r@%h:%p- The location to save persistent connection information.
ControlMaster: auto- If there is a persistent connection, use it. If not, create one.
autossh- This is a tool, that spawns SSH for you and if SSH quits for an irregular reason, relaunches ssh.
Update: Added explanation of some of the configuration and commands below.