Setup SSH password-less login on Linux

Shegun Babs
Shegun Babs Sun Feb 2018

SSH as we know it, is a network protocol used to establish a secure connection between two machines (in most cases between a client and a server) and public key based and password authentication.

Check for existing SSH key pair

Before generating a new SSh key pair, check if you have and existing key pair on your client machine so you do not overwrite the existing key pair

$ ls -al ~/.ssh

if there are existing keys, you will files listed else you will see an empty directory listing.

Generate a new SSH key pair (if you don't have one)

Type in the following on the commandline to generate an SSH key pair with your email

$ ssh-keygen -t rsa -b 4096 -C "email@example.com"

Press Enter to accept the default location and file name.

Copy the public key

To now login to your remote machine, you will have to copy the public key on the client to the remote machine. There are two ways to do this.

$ ssh-copy-id remote_username@remote_ip_address

You will be prompted to enter the remote_username user password

$ remote_username@remote_ip_address's password:

Once the user is authenticated, the public key is copied to the remote machine's authorized_keys file and the connection will be closed.

If ssh-copy-id utility is not available largely due to using Windows OS on the client machine you can use the method below

$ cat ~/.ssh/id_rsa.pub | ssh remote_username@remote_ip_address "cat >> ~/.ssh/authorized_keys"

Try your password-less login

After the steps above the remote machine is ready for a password-less login. Lets try to login!

$ ssh remote_username@remote_ip_address

If everything goes well, your login should be successful.