ssh-copy-id does not work
Solution 1:
9/10 times it's because ~/.ssh/authorized_keys isn't at the right mode.
chmod 600 ~/.ssh/authorized_keys
Solution 2:
Check in /etc/ssh/sshd_config
to allow authentication with a key. You should have something like this in it, and make sure the lines are not commented:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
Then restart sshd
after you modify the file:
/etc/init.d/sshd restart
Solution 3:
I found that with my system the problem was the user directory (/home/username) was equipped with the wrong permissions set. It was drwxr-x-w-
and it needed to be drwxr-xr-x
(with write permission only for the owner). The solution was to use chmod:
sudo chmod 0755 /home/username
Solution 4:
I'm not an expert here but came across such issue too, here are my two cents in addition to all the other suggestions.
Sometimes ssh-copy-id
copies the wrong key to the remote server (may happen if you have several keys and/or are using non-default names for key files) or your authentication agent is misconfigured.
Here's a quote from the man pages:
If the -i option is given then the identity file (defaults to ~/.ssh/id_rsa.pub) is used, regardless of whether there are any keys in your ssh-agent. Otherwise, if this: ssh-add -L provides any output, it uses that in preference to the identity file.
So basically you want to check that:
- Your system authentication agent (usually ssh-agent) sees the keys that you intend to use (check
ssh-add -L
output)- If you don't see the desired key, add it using ssh-add
- The
ssh-copy-id
copied the same key to the remote machine (just log in to the remote server using password and check the contents of~/.ssh/authorized_keys
)- If you don't see the desired key on the remote server, you can implicitly tell
ssh-copy-id
which key to copy:ssh-copy-id -i ~/.ssh/some_public_key
- If you don't see the desired key on the remote server, you can implicitly tell
Hope that helps.