SSH Config Aliases
If your like me and you deal with a lot of servers for development or test and do it from a Unix machine, I’ve got a really handy tip: SSH hostname pattern matching.
Say I’ve got a SSH config file like this (at ~/.ssh/config
):
host s*
HostName atrcu%h.example.com
User example1
Port 22
host b*
HostName atrcx%h.example.com
User example2
Port 22
host ??*
HostName atvts%h.example.com
User example5
Port 2205
The ssh man page explains this really well:
A pattern consists of zero or more non-whitespace characters, ‘*’ (a wildcard that matches zero or more characters), or ‘?’ (a wildcard that matches exactly one character). For example, to specify a set of decla- rations for any host in the .co.uk set of domains, the following pat- tern could be used:
Host *.co.uk
The following pattern would match any host in the 192.168.0.[0-9] network range:
Host 192.168.0.?
A pattern-list is a comma-separated list of patterns. Patterns within pattern-lists may be negated by preceding them with an exclamation mark (’!’). For example, to allow a key to be used from anywhere within an organisation except from the ``dialup’’ pool, the following entry (in authorized_keys) could be used:
from="!.dialup.example.com,.example.com"
So there you have it!