SSH Alias Script
One of the cool things you can do with SSH, is creating aliases for your connections. This is especially useful in cases where you need to connect to a (hard to remember) IP address, use a different user name or a different port number.
Adding an alias is simple. Just add the following to your ~/.ssh/config
file:
host foo hostname 123.123.123.123 user foobar port 9876
Now you can simply run ssh foo
instead of ssh foobar@123.123.123.123 -p 9876
. Much better, right? And with bash completion this will even be autocompleted .
But this wasn't comfort enough for me. I also wanted a way to easily add a new alias from the command line. That's why I added a another function to my set of .bashrc
tools:
# SSH bookmark creator sbm(){ if [ $# -lt 2 ]; then echo "Usage: sbm <short> [<user>@]<hostname> [-p <port>]" >&2 return 1 fi short=$1 arg=$2 if $(echo "$arg" | grep '@' >/dev/null); then user=$(echo "$arg"|sed -e 's/@.*$//') fi host=$(echo "$arg"|sed -e 's/^.*@//') if [ "$3" == "-p" ]; then port=$4 fi if $(grep -i "host $short" "$HOME/.ssh/config" > /dev/null); then echo "Alias '$short' already exists" >&2 return 1 fi if [ -z "$host" ]; then echo "No hostname found" >&2 return 1 fi echo >> "$HOME/.ssh/config" echo "host $short" >> "$HOME/.ssh/config" echo " hostname $host" >> "$HOME/.ssh/config" [ ! -z "$user" ] && echo " user $user" >> "$HOME/.ssh/config" [ ! -z "$port" ] && echo " port $port" >> "$HOME/.ssh/config" echo "added alias '$short' for $host" }
This allows me to call sbm foo foobar@123.123.123.123 -p 9876
to create the above alias. The script is probably not perfect, so if you'd like to improve it checkout this gist at github.