Consider two machines A and B. We want to connect machine B from A over SSH. To do so we have to specify password every time we connect. Here, we can create a setup where SSHing can be done without the password prompt. On connecting machine B from A, ssh won’t ask for password.
Overview of Setup
- Generate public and private encryption keys on machine A.
- Authorize machine A in machine B by appending the public key of A in the file authorized_keys of machine B.
That’s it! You can now access (SSH) machine B from A without specifying the password. B has been now authorized to access A without requiring the password.
- Login to machine A and execute the following command:
ssh-keygen && ssh-copy-id -i user@B
The first command generates keys. It will ask for path of the keys and passphrase. Hit Enter key repeatedly to choose the default values.
The second command adds generated key to B. It will ask for password of user at machine B. And this would be the last time!
- Login to machine A.
- Generate public and private keys like following:
ssh-keygen -t dsa
It will ask for path of the keys and passphrase. Choose the default path and no password.
This will generate files id_dsa.pub and id_dsa in ~/.ssh
- Browse for the above generated keys and copy the public key, that is id_dsa.pub, to the machine B.
- Login to machine B.
- Append the public key of A to the file authorized_keys:
cat id_dsa.pub >> .ssh/authorized_keys
Note: Create the directory .ssh in your home if it doesn’t exist.
You can now delete id_dsa.pub from machine B if you want to.
- Make sure of the permissions of the directory .ssh and the file authorized_keys are read-write only by the targetted user. Otherwise it might not work.
chmod 700 .ssh chmod 600 .ssh/authorized_keys
- Now go back to machine A and SSH machine B. It should not ask for the password.