Permission denied (publickey)

Posted July 24, 2019 2.4k views
ApplicationsUbuntu 18.04

good afternoon, i generated a ssh key into remote server and now i cannot login, it say: Permission denied (publickey). Can i recover this server?

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
2 answers

If you haven’t disabled password logins to your droplet, you could try:

ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no <your_droplet_address>

This will make ssh skip sending the key and the server will prompt for username / password.

If you can’t log in with a username and password any more, your only option is to use the console:

  • Step 1: enable password login on server side for temporary. We’ll change it back in step 4.

    Need to run from REMOTE SERVER

    echo "PasswordAuthentication yes # TO REMOVE ME" | sudo tee -a /etc/ssh/sshd_config
    sudo systemctl restart ssh
  • Step 2: upload SSH key file from localhost to server.

    Need to run from LOCAL HOST

    ssh-copy-id <user_id>@<server_ip_address>

    You should be asked for input the remote user’s login password.

  • Step 3: test if the SSH key is working.

    Need to run from LOCAL HOST

    ssh <user_id>@<server_ip_address>

    It should be logged in without login password.

  • Step 4: restore server side SSH daemon’s setting.

    Need to run from REMOTE SERVER

    sed -e '^PasswordAuthentication yes # TO REMOVE ME$' -i /etc/ssh/sshd_config
    sudo systemctl restart ssh