Enabling Password less ssh login

Enabling Linux Automatic Password-less SSH Login

Automatic passwrod-less ssh login can make our life easier. To enable this, we need to copy our SSH public keys to the remote machines for automatic password-less login. We introduce two methods in this post: using ssh-copy-id command and the manual way.

Generate SSH key pair

If you do not have a SSH private/public key pair, let’s generate one first.

$ ssh-keygen -t rsa

By default on Linux, the key pair is stored in ~/.ssh (id_rsa and id_rsa.pub for private and public key).

Copy public SSH key to the remote machine

You have two choices here. Unless that you can not use the ssh-copy-id method, you can try the “manual” way.

The easiest way

Let ssh-copy-id do it automatically:

$ ssh-copy-id username@remotemachine

If you have multiple keys in your ~/.ssh directory, you may need to use -i key_file to specify which key you will use.

The manual way

Copy the public SSH key to remote machine

$ scp .ssh/id_rsa.pub username@remotemachine:/tmp/

Log on the remote machine

$ ssh username@remotemachine

Append your public SSH key to ~/.ssh/authorized_keys

$ cp ~/.ssh/authorized_keys ~/.ssh/authorized_keys.bak # backing up before changing is a good habit
$ cat /dev/shm/id_rsa.pub >> ~/.ssh/authorized_keys # append pub key to authorized keys list

Make sure the mode of ~/.ssh/authorized_keys is 755:

$ chmod 755 ~/.ssh/authorized_keys

Possible Problems

Home directory permission

Check the home directory’s permission which may cause the key-based login fail (suppose the home directory is /home/zma):

# chmod 700 /home/zma/