Use SSH Config to Remember Connection Details
CLI/
You don’t need to remember all of your SSH connection details. And there is a better way than digging through history or creating aliases for them. If you frequently have to use the same connection or it has many arguments to specify, SSH config is what you are looking for.
Setting up SSH Config
Let’s say we use the following command to connect to our personal website’s server.
ssh -i ~/.ssh/ec2-keys/ec2.pem [email protected]
And we use this command to connect to our project’s server that we are currently working on.
ssh -i ~/.ssh/ec2-keys/another-key [email protected] -p 2345
Instead of typing all of that every time, let’s create a configuration that remembers these details for us. Start with opening the configuration file.
nano ~/.ssh/config
If the file doesn’t exist yet, that’s okay, run the command anyway because it will create the file for you on save.
Each connection you want to save must be named. You specify the name after the Host
keyword. After that, every keyword and it’s corresponding argument is sectioned to that connection until a specification for another Host
or the end of the file.
To specify the IP address of the server use the HostName
keyword, and for the port use the Port
keyword. The user to log in with is specified with the User
keyword. And the SSH key to use for this connection is specified with the IdentityFile
keyword. You can also write comments, which can be done by prepending a #
to the text.
# Example of a configuration
Host personal-site
HostName 10.20.33.44
User ec2-user
IdentityFile ~/.ssh/ec2.pem
Host awesome-app
HostName 10.20.40.50
Port 2345
User ubuntu
IdentityFile ~/.ssh/work/another-key
The correct permissions for the config file should be that only the owner, which is your user, can read and write to this file. Use ls -l
to verify the permissions
ls -l
-rw------- 1 yourUsername yourUsername 124 Apr 2 10:27 config
If the permissions are not set correctly, you can use the following command to achieve the aforementioned setting.
chmod 600 ~/.ssh/config
Using the Configuration
After creating the config for a connection, you can now use it by referencing its name. Instead of typing all the details, you only pass the name you specified after the Host
keyword.
ssh personal-website
ssh awesome-app
You can press the tab key to auto-complete the specified Host
names.
This configuration can also be used with the scp
and sftp
programs.
scp filename personal-website:/home/ec2-user/filename