Fork me on GitHub

Making SSH Easy

SSH is great. But it does mean typing longer commands than you otherwise would have done.

For example, if your local user name is joe but your user name on a remote server is jbloggs, then you have to specify the user name whenever you use SSH to communicate with the remote server. That can easily get annoying.

For example:

$ ssh jbloggs@someserver.example.com

That's long. Especially for lazy people. Or people who want to concentrate on what they are trying to do rather than having their brains pepped with annoying details.

You can shave some characters off the command line by configuring your SSH client to automatically use the correct user name on the remote servers - add this to your ~/.ssh/config :

Server *.example.com
    UserName jbloggs

Then you can reduce your command line to:

$ ssh someserver.example.com

Which is neat. And with the config fragment above, the user name takes effect on every server in your example.com domain.

But we can do better - by not typing ssh at all.

The trick is to make a command named someserver.example.com - which then does the ssh-ing for you. And (obviously!) somebody has already written the script for you!

The script (actually a command, but that's splitting hairs) will look at the name it is called under, and behave exactly as if you had used the ssh command.

A convenient place for such a command in your ~/bin directory, as this will be in your $PATH already:

$ cd ~/bin
$ ln -s /usr/bin/ssh-argv0 someserver.example.com

This now gives you a command named someserver.example.com (which obviously still obeys your ~/.ssh/config etc).

The end result is that you can:

$ someserver.example.com df -h

instead of:

$ ssh jbloggs@someserver.example.com df -h

As an added benefit: The fact that you now have a command named someserver.example.com means that the normal TAB-completion can be used - most likely, you can get away with just typing some followed by TAB and move on with your life.

Enjoy!