How can I set up password-less SSH login?
Solution 1:
Answer
Execute this command (if you already have an SSH key, you can skip this step):
ssh-keygen
Then you'll need to copy the new key to your server:
ssh-copy-id user@host
## or if your server uses custom port no:
ssh-copy-id "user@host -p 1234"
After the key is copied, ssh into the machine as normal:
ssh user@host
You can now login without entering a password from the particular machine you executed the commands at.
Example
not-marco@rinzwind-desktop:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/not-marco/.ssh/id_rsa):
Created directory '/home/not-marco/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/not-marco/.ssh/id_rsa.
Your public key has been saved in /home/not-marco/.ssh/id_rsa.pub.
The key fingerprint is:
b1:25:04:21:1a:38:73:38:3c:e9:e4:5b:81:e9:ac:0f not-marco@rinzwind-desktop
The key's randomart image is:
+--[ RSA 2048]----+
|.o= . oo. |
|*B.+ . . |
|*=o . o . |
| = . = |
|. o S |
|E. |
| o |
| . |
| |
+-----------------+
not-marco@rinzwind-desktop:~$ ssh-copy-id not-marco@server
not-marco@server's password:
Now try logging into the machine, with "ssh 'not-marco@server'", and check in:
~/.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
Explanation
This assumes you already can successfully connect to your server via SSH.
You'll need to generate an SSH Keypair which will allow you to identify you as yourself without using a password. You can opt to protect keys with a passcode if you wish, but this can be left blank allowing totally password-less SSH access.
- First create your SSH Keypair by running
ssh-keygen
this will create anid_rsa
andid_rsa.pub
file. Thepub
file is what goes on the servers, the private key (id_rsa
) is what stays with you and is how you identify yourself. - Next copy the public key to your server with
ssh-copy-id user@server
replacing user with your remote user and server with the machine DNS name or IP address. It'll prompt for your SSH password, enter it and if all completes successfully you'll be able to access the machine viassh user@server
without needing a password.
References
- https://help.ubuntu.com/community/SSH/OpenSSH/Keys
Solution 2:
Type the following commands:
-
ssh-keygen
Press Enter key till you get the prompt
-
ssh-copy-id -i root@ip_address
(It will once ask for the password of the host system)
ssh root@ip_address
Now you should be able to login without any password.