Why you can trust ZDNET : ZDNET independently tests and researches products to bring you our best recommendations and advice. When you buy through our links, we may earn a commission. Our process

'ZDNET Recommends': What exactly does it mean?

ZDNET's recommendations are based on many hours of testing, research, and comparison shopping. We gather data from the best available sources, including vendor and retailer listings as well as other relevant and independent reviews sites. And we pore over customer reviews to find out what matters to real people who already own and use the products and services we’re assessing.

When you click through from our site to a retailer and buy a product or service, we may earn affiliate commissions. This helps support our work, but does not affect what we cover or how, and it does not affect the price you pay. Neither ZDNET nor the author are compensated for these independent reviews. Indeed, we follow strict guidelines that ensure our editorial content is never influenced by advertisers.

ZDNET's editorial team writes on behalf of you, our reader. Our goal is to deliver the most accurate information and the most knowledgeable advice possible in order to help you make smarter buying decisions on tech gear and a wide array of products and services. Our editors thoroughly review and fact-check every article to ensure that our content meets the highest standards. If we have made an error or published misleading information, we will correct or clarify the article. If you see inaccuracies in our content, please report the mistake via this form.


How to make SSH even easier to use with config files

If you use Secure Shell to log into remote Linux servers throughout the day, you should consider using a config file to make your life easier. Here's how.
Written by Jack Wallen, Contributing Writer
Stylish Hipster Guy with Tattoo on Hand, Writes Notes in Computer
Getty Images/hopeist

Secure Shell (SSH) is one of those tools every Linux user will probably work with at some point. With SSH you can easily (and securely) log into remote servers and desktops to administer, develop, and check up on those machines.

Using SSH is as simple as:

ssh jack@

Or even just:


Of course, you would exchange the IP address for the address (or domain) of the machine you need to access. 

SSH gets a bit less simple when you have numerous machines you access with different configurations (such as different usernames or SSH authentication keys). Imagine if you had 20 or so different servers you had to log into daily. Not only would you have to keep track of the IP addresses or domains of those servers, but you'd also have to remember what usernames or authentication keys were used. That alone could get rather overwhelming.

Also: The best Linux laptops for consumers and developers

Thankfully, SSH allows you to create a config file to house all of that information. So, instead of having to type something like ssh olivia@ -p 2222, you could simply type ssh web1

Let me show you how this is done.

How to create the SSH config file

What you'll need: The only things you'll need for this are a desktop machine with OpenSSH installed and 1 or more servers that allow SSH connections.

1. Create the config file

Log in to the Linux machine you use to SSH into all of those remote machines. Open a terminal window and create the new configuration file with the command shown in.


Creating the new SSH config file with the help of nano.

Since this is a new file, it'll be a blank canvas to which we can start adding configurations for servers. Let's say you want to configure the following remote servers:

  • web1 at with user olivia

  • db1 at with user nathan and SSH key ~/.ssh/id_nathan

  • docker1 at with user lilly on port 2222

Our first entry will look like this:

Host "web1"
     Hostname ""
     User olivia

If you save and close the file at this point, you could SSH into with the command:

ssh web1

2. Configure more entries

Let's go ahead and configure the next two entries, which will look like this:

Host db1
     Hostname ""
     User nathan
     IdentityFile ~/.ssh/id_nathan
     PubkeyAuthentication yes

Host docker1
     Hostname ""
     User lilly
     Port 2222

Save and close the file. You can now secure shell into those machines with the commands:

ssh web1
ssh db1
ssh docker1

You can use whatever nickname you need for each host, just make them memorable, so you don't forget which machine you're trying to reach and have to constantly reference the config file to jar your memory.

3. Configure specific username

Let's say, however, that you use the same username on all your remote servers, but you use a different username on your local machine. For example, your local machine username might be jack but you've created the admin user on all of your remote servers. You could create a single entry for all of those servers with a wildcard in the IP address like this:

Host 192.168.1.*
User admin

The above configuration would be placed at the top of your config file.

4. Configure individual entries for SSH key authentication

You could then configure each server individually as needed, leaving out the User option. For example, if both servers at and use SSH key authentication, you could configure entries like so:

Host web2
     IdentityFile ~/.ssh/id_admin
     PubkeyAuthentication yes

Host web3
     IdentityFile ~/.ssh/id_admin
     PubkeyAuthentication yes

Because we applied user admin to the entire range of machines on IP address scheme 192.168.1.x, that username will be applied to all connections. You can also override that global configuration by adding a User configuration line on an as-needed basis.

Also: Ready to ditch Windows for Linux? This is the ideal distro for you

The SSH config file allows for several other options (all of which can be read about in the official SSH config documentation), but these examples shown above should be everything you need to get going with the SSH config file. 

And that's all there is to using the SSH config file to help make your remote access with Secure Shell even easier.

Editorial standards