I wanted a fresh start for a project idea. I just rebuilt my droplet with the Ubuntu 16.04.1 x64 image. I received the root password in my email. I wanted to SSH into the server, so I removed the hostname from my known_hosts (in this case, I just deleted my known_hosts file). Every time I attempt to log in I get the message “Permission denied (publickey).”
I’ve tried to do some research on this message, and I don’t understand what I need to do to fix it. I found I can log in to the server using the console on the DO management page, but that console is very laggy. I’d prefer to use my native console. Any pointers?
jfagan@waxball:~/.ssh$ ssh root@mydomain.com
The authenticity of host 'mydomain.com (123.456.789.123)' can't be established.
ECDSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'mydomain.com,123.456.789.123' (ECDSA) to the list of known hosts.
Permission denied (publickey).
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
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.
Join our DigitalOcean community of over a million developers for free! Get help and share knowledge in Q&A, subscribe to topics of interest, and get courses and tools that will help you grow as a developer and scale your project or business.
@aftersox
If you received a
root
password via e-mail, then an SSH Key was not setup on the Droplet when you deployed it, thus you’d need to login asroot
and add the key after the fact by pasting in your public key to:If this doesn’t exist, as
root
, you can run:and then set proper permissions on the directory and file by running:
You would then edit the
authorized_keys
file using:and then paste in your public SSH key (which should start with
ssh-rsa
in most cases).Once your public key is in place, you should be able to login from your terminal (on a Mac) or PuTTy (on Windows) using:
Where
DROPLET_IP
= the public IP of your Droplet and-i
defines the path to your private key file.When spinning up a new machine there is a section called “Add your SSH Keys”. Click “New SSH key” and copy the contents of your public key. For example, if your key is named
id_rsa
then you need to copy theid_rsa.pub
file contents into the SSH key content section. Then give the key a unique name you can use to identify it. Click the checkbox for that key and Digital Ocean will make sure that the root user has this key setup after the machine is started up.NOTE: If you copy and paste the contents of this file from a GUI, it can sometimes copy invisible line breaks and this will break the functionality of your key. I find using the cat command from the command line interface can fix this.
If this doesn’t fix it for you then you may also need to check 1) if you have an
~/.ssh/config
file on your local machine and 2) if your~/.ssh/config
file on your local machine has any references to the host you are trying to connect to.