Configure SSH Connections Using an SSH Config File
📖 Scenario: You often connect to multiple remote servers using SSH. Typing long commands with usernames, hostnames, and ports every time is tiring. To make this easier, you can create an SSH config file that stores these details. This way, you can connect with a simple nickname.
🎯 Goal: Build an SSH config file with entries for two servers. Each entry will have a nickname, hostname, username, and port. This will let you connect easily using the nickname instead of full details.
📋 What You'll Learn
Create an SSH config file at ~/.ssh/config
Add two host entries with exact nicknames and details
Use correct indentation and syntax for SSH config
Verify the config by showing its content
💡 Why This Matters
🌍 Real World
SSH config files save time and reduce errors when connecting to many servers. They are used by system administrators, developers, and anyone managing multiple remote machines.
💼 Career
Knowing how to configure SSH connections is essential for IT support, DevOps, and software development roles that require secure remote access.
Progress0 / 4 steps
1
Create the SSH config file with the first host entry
Create a file called ~/.ssh/config and add a host entry with the nickname server1. Set the hostname to 192.168.1.10, username to admin, and port to 2222. Use the exact format shown below with proper indentation (one tab or 4 spaces).
Linux CLI
Hint
Each host entry starts with Host nickname. The following lines must be indented and specify HostName, User, and Port.
2
Add a second host entry to the SSH config file
Add another host entry to the same ~/.ssh/config file. Use the nickname server2. Set the hostname to example.com, username to guest, and port to 2200. Keep the same indentation style as the first entry.
Linux CLI
Hint
Remember to separate host entries with a blank line for readability. Use the same indentation for the second entry.
3
Set file permissions for the SSH config file
Set the permissions of the ~/.ssh/config file to 600 so only you can read and write it. Use the chmod command with the exact permission number.
Linux CLI
Hint
Use chmod 600 ~/.ssh/config to restrict file access to yourself only.
4
Display the SSH config file content
Use the cat command to display the contents of the ~/.ssh/config file. This will confirm your entries are saved correctly.
Linux CLI
Hint
Use cat ~/.ssh/config to see the file content in the terminal.
Practice
(1/5)
1. What is the main purpose of the Host entry in an SSH config file?
easy
A. To specify the password for the SSH connection
B. To create a shortcut name for an SSH connection
C. To list all IP addresses allowed to connect
D. To define the encryption method used
Solution
Step 1: Understand the role of Host in SSH config
The Host keyword defines a shortcut name for a server, so you can connect using that name instead of typing full details.
Step 2: Compare options
Options B, C, and D do not describe the purpose of Host. Passwords and encryption are handled differently, and allowed IPs are not set here.
Final Answer:
To create a shortcut name for an SSH connection -> Option B
Quick Check:
Host = shortcut name [OK]
Hint: Remember: Host = shortcut name for SSH [OK]
Common Mistakes:
Thinking Host sets password
Confusing Host with IP address list
Assuming Host defines encryption
2. Which of the following is the correct syntax to specify a custom port in an SSH config file?
easy
A. Port: 2222
B. SetPort 2222
C. port=2222
D. Port 2222
Solution
Step 1: Recall SSH config syntax rules
SSH config uses keyword followed by a space and then the value, without colons or equals signs.
Step 2: Check each option
Port 2222 matches the correct syntax: Port 2222. Options A, C, and D use invalid syntax.
Final Answer:
Port 2222 -> Option D
Quick Check:
Keyword + space + value = correct syntax [OK]
Hint: Use space, no colon or equals in SSH config lines [OK]
Common Mistakes:
Using colon after keyword
Using equals sign instead of space
Inventing keywords like SetPort
3. Given this SSH config snippet:
Host myserver
HostName 192.168.1.10
User alice
Port 2200
What command will connect to the server using this config?
medium
A. ssh myserver
B. ssh alice@192.168.1.10 -p 2200
C. ssh 192.168.1.10
D. ssh -p 22 myserver
Solution
Step 1: Understand the config usage
The config defines a shortcut myserver with hostname, user, and port. Using ssh myserver applies all these automatically.
Step 2: Analyze options
ssh myserver uses the shortcut. ssh alice@192.168.1.10 -p 2200 manually specifies user and port but bypasses the config shortcut. ssh 192.168.1.10 misses user and port. ssh -p 22 myserver uses wrong port.
Final Answer:
ssh myserver -> Option A
Quick Check:
Use shortcut name to connect with config settings [OK]
Hint: Use the Host shortcut name to connect easily [OK]
Common Mistakes:
Ignoring the shortcut and typing full command
Using default port 22 instead of configured port
Missing the username from config
4. You wrote this SSH config:
Host test
HostName 10.0.0.5
User bob
Port 22
IdentityFile ~/.ssh/id_rsa_test
But when you run ssh test, it asks for a password instead of using the key. What is the likely problem?
medium
A. The User should be root, not bob
B. The Port 22 is wrong and should be 2222
C. The IdentityFile path is incorrect or not expanded
D. The HostName must be an IP, not a hostname
Solution
Step 1: Check IdentityFile usage
The IdentityFile path uses ~ which may not expand correctly in SSH config. It should be the full path or use $HOME.
Step 2: Evaluate other options
Port 22 is default and usually correct. User 'bob' is valid if correct user. HostName as IP is valid. So the key problem is likely the path expansion.
Final Answer:
The IdentityFile path is incorrect or not expanded -> Option C
Quick Check:
Use full path for IdentityFile to avoid key not used [OK]
Hint: Use full path, not ~, for IdentityFile in SSH config [OK]
Common Mistakes:
Assuming port 22 is always wrong
Changing user without reason
Confusing hostname format
5. You want to create an SSH config entry that connects to multiple servers with the same user and key but different hostnames. Which is the best way to write this?
hard
A. Host server1 server2 server3\n User admin\n IdentityFile ~/.ssh/admin_key
B. Host server*\n User admin\n IdentityFile ~/.ssh/admin_key
C. Host *\n User admin\n IdentityFile ~/.ssh/admin_key
D. Host server1\n User admin\n IdentityFile ~/.ssh/admin_key\nHost server2\n User admin\n IdentityFile ~/.ssh/admin_key\nHost server3\n User admin\n IdentityFile ~/.ssh/admin_key
Solution
Step 1: Understand grouping hosts in SSH config
You can list multiple hostnames after one Host keyword to apply the same settings to all.
Step 2: Compare options
Host server1 server2 server3\n User admin\n IdentityFile ~/.ssh/admin_key lists all servers in one line, applying user and key once. Host server*\n User admin\n IdentityFile ~/.ssh/admin_key uses wildcard which may match unintended hosts. Host *\n User admin\n IdentityFile ~/.ssh/admin_key applies to all hosts, not just these servers. Host server1\n User admin\n IdentityFile ~/.ssh/admin_key\nHost server2\n User admin\n IdentityFile ~/.ssh/admin_key\nHost server3\n User admin\n IdentityFile ~/.ssh/admin_key repeats same settings multiple times, which is redundant.
Final Answer:
Host server1 server2 server3
User admin
IdentityFile ~/.ssh/admin_key -> Option A
Quick Check:
List multiple hosts after one Host for shared settings [OK]
Hint: List multiple hosts after one Host line to share settings [OK]
Common Mistakes:
Using wildcard * too broadly
Repeating same block for each host
Using Host * which applies to all hosts
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.