|Table of content
- A Linux or macOS distribution installed on your computer
- Access to a user with root privileges
1. What is SSH and why it is used?
SSH stands for Secure Socket Shell. It’s a protocol that allows users to connect in a secure way to remote servers. Although strong passwords alone give basic protection from security threats, encrypted data communication is necessary for a safe connection to servers. In addition, SSH can be used for:
- Executing commands remotely and setting up a server
- Transferring any kind of file
- Managing access to a server for different users
SSH establish a secure connection with the help of a set of asymmetric encryption keys. Two keys are generated for SSH: a public key and a private key.
- The role of the public key is to encrypt the data. It is configured inside the remote server.
- The private key is used to decrypt the data that has been encrypted by the public key: it is given to the users to allow them to connect to the server.
Hence the terminology, the public key can be made public whereas the private should be kept private.
2. How to use SSH to connect to a remote server with a private key
Straight to the point: if it is only for a one time connection, enter the following command into your terminal:
$ ssh -i ssh_key_path/ssh_key Username@Hostname_or_IP
- ssh_key_path is the path of the directory containing your private key
- ssh_key is the filename of your key
- Username is the name of the user inside the remote server
- Hostname_or_IP has to either be the hostname or the IP of the remote server
The ssh command should be installed by default on your system. Please note that root privileges are required to execute this command. Moreover, you might be prompted to enter the password for the key after executing this command. If the key password is unknown to you, you need to verify it with the provider of your key.
3. How to use ssh-agent to store your keys and passwords for easy logins
If you will frequently connect to the remote server by SSH, you may want to configure ssh to store your keys and passwords. This way, you won’t need to specify your private key and its password at each connection. Here is how it is done:
$ ssh-agent $BASH
$ ssh-add ssh_key_path/ssh_key
If there is a password attached to your private key, you will be prompted to input it.
If you obtain the error message “WARNING: UNPROTECTED PRIVATE KEY FILE! Permissions 0644 for ‘ssh_key_path/ssh_key’ are too open.”, you can resolve this permission with the following simple command:
$ chmod 400 ssh_key_path/ssh_key
Then execute once more the ssh-add command and you will become able to simply access the remote server with your username, host information and no password:
$ ssh Username@Hostname_or_IP