SSH login without password
Objective
Quickly login to/from Linux or MacOSX servers using OpenSSH without typing
a password each time. That is, automatically login from host1 to host2,
either because you are impatient, lazy, or want to call ssh or scp from
within a shell script.
Procedure
First log into host1 as user1 and generate a pair of authentication keys. Do not enter a passphrase:
user1@host1:~> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user1/.ssh/id_rsa):
Created directory '/home/user1/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user1/.ssh/id_rsa.
Your public key has been saved in /home/user1/.ssh/id_rsa.pub.
The key fingerprint is:
3f:4e:15:79:3a:9f:97:7c:3b:ae:e9:58:37:bc:37:e5 user1@host1
Now create a directory ~/.ssh (or it may already exist) as user2 on host2:
user1@host1:~> ssh user2@host2 mkdir -p .ssh
user2@host2's password:
Finally append user1's new public key to .ssh/authorized_keys and
enter user2's password one last time:
user1@host1:~> cat .ssh/id_rsa.pub | ssh user2@host2 'cat >> .ssh/authorized_keys'
user2@host2's password:
From now on you can log into host2 as user2 from host1 without a password:
user1@host1:~> ssh user2@host2
Note Depending on your version of SSH you might also have to change some file permissions:
- Put the public key in
.ssh/authorized_keys2
- Change the permissions of
.ssh
to700
- Change the permissions of
.ssh/authorized_keys2
to640