I just created a ubuntu 18.04 LTS droplet with SSH connection. I am trying to access it from my terminal at local machine by ssh <PUBLIC IP>. but I am getting Permission Denied (public key).
I have added the SSH key from id_rsa to my DO account and also added it to the droplet when creating. I did not set any password as I wanted to do via SSH only. When I am trying to access console from the dashboard, it’s asking for password which I did not set. How can I solve this?

I tried to destroy and recreate droplet, but same problem is occurring. How can I fix it?

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Submit an Answer
5 answers

You need to add your id_rsa.pub key to your DigitalOcean account. Also when you ssh you can use the -vvv option to get more verbose output and see why it fails to connect, e.g

ssh -vvv root@IPAddress

If the ssh is still failing, feel free to paste the output of the ssh connection.


edited by MattIPv4

In case someone else has this issue in the future… recreating the droplet for me was not an option as I already had updated DNS to point to the IP address assigned to the droplet.

Make sure when you copy the contents of your id_rsa.pub key and paste it into the DigitalOcean SSH key add form, you don’t have any spaces or newlines following the last character of the key. Whitespace/newlines will cause the key to be invalid and the connection to fail. That was my issue. I deleted the bad SSH key at DigitalOcean and created a new one, this time making sure no spaces (or newlines) followed the last character of the key (which is usually your local username or email address).

Hope that helps someone in the future!

I found similar problem where the ‘Add SSH Keys’ dialog does not update the ’.ssh/authorizedkeys’ file for root. This must be done manually. However a separate issue is that the DO Console opens a terminal browser window that has a short copy/past buffer (~128bytes). From the terminal window run nano ’.ssh/authorized_keys’ for root, and update the rsa key by repeating copy/paste multiple times until the entire rsa key value is copied

The above answer doesn’t really solve it in my opinion.

You want to set Authentication to SSH keys

Espescially when creating from the command line you want to specify the --ssh-keys

doctl compute droplet create xxx.co.za --region lon1 --image ubuntu-18-04-x64 --size s-2vcpu-2gb --ssh-keys 1721306

You can get the ssh keys for your account with:

doctl compute ssh-key list

I experienced the same issue even though I had added my SSH key when I created the droplet. I ended up resetting the password which resulted in the SSH key working again without doing anything else. NB. ssh -vvv user@myip showed me that the SSH key was in known_hosts but for some wierd reason it was not authenticating me. I think @lakeshore ’s answer is very useful as well