bash: /home/user/.ssh/authorized_keys: No such file or directory
Create a ssh key:
Command:
ssh-keygen -t rsa –P ""
Moving the key to authorized key:
Command:
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
bash: /home/user/.ssh/authorized_keys: No such file or directory
Solution 1:
You have to create the .ssh
directory and the authorized_keys
file the first time.
-
Create the
.ssh
directory:mkdir ~/.ssh
-
Set the right permissions:
chmod 700 ~/.ssh
-
Create the
authorized_keys
file:touch ~/.ssh/authorized_keys
-
Set the right permissions:
chmod 600 ~/.ssh/authorized_keys
The permissions are important! It won't work without the right permissions!
Now you can add the public key to the authorized_keys
file:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
You have to add the public key of your computer to the authorized_keys
file of the computer you want to access using SSH Keys!
As terdon mentioned you can also just use this command:
ssh-copy-id user@host
This will put your id_rsa.pub
(in your ~/.ssh
directory) in the remote computer's authorized_keys
file, creating the .ssh
directory and authorized_keys
file with the right permissions if necessary.
Solution 2:
Since I don't have enough reputation, I'm adding this here. In addition to Louis Matthijssen's answer if you are still not able to login through ssh as a user that you've created, like
ssh username@host
then this may be because of the absence of owner permission that you must add to your /home/username/.ssh folder. I had the same issue and you can give this permission as:
chown -R username:username /home/username/.ssh
This can probably happen simply because you were creating the directory and setting the permissions as root, but not as the username you want to access the server with.
Hope this helps someone.