Question

I cannot login to my user directly from SSH, `Permission denied (publickey).`.

Hello I have been using DigitalOcean for couple of months for my Python Flask project. I usually starts my Droplet creation with these commands.

# In my local computer.
ssh root@123.123.123.123
# In droplet.
adduser user_test
usermod -aG sudo user_test
su - user_test
# Logged in into user user_test.

I used DigitalOcean since last year November and then stopped using DigitalOcean for the last two months. I am pretty sure after the commands above I can directly connect into user user_test with this command.

ssh user_test@123.123.123.123

However today login with such command now results in Permission denied (publickey).. If I want to login into user_test I need to login from root.

ssh root@123.123.123.123
su - user_test

Is there any steps I missed those make me unable login directly to user?

Show comments

Submit an answer

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!

Sign In or Sign Up to Answer

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.

Want to learn more? Join the DigitalOcean Community!

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.

@notalentgeek

The Permission Denied (publickey) generally means that SSH Keys are enabled and when trying to login as user_test, the only accepted method of authentication is an SSH Key, which isn’t provided via the command you’re executing to login.

To pass an SSH Key during login, you need to pass the -i argument followed by the path to the key (private key) that’s stored locally.

ssh user_test@111.222.333.444 -i /path/to/private_key

As root, I’d open up /etc/ssh/sshd_config, like so:

nano /etc/ssh/sshd_config

And search for PasswordAuthentication. If that’s set to no, password-based logins won’t work and only SSH Keys will be allowed to be used – which would be a little odd if you’re able to login as root without a key, if this is set to no.

When trying to login with user_test, you can pass -v, -vv, or -vvv to get a more verbose output as to what’s going on to help identify the issue. You’d run that locally, for example, try:

ssh user_test@111.222.333.444 -v

or

ssh user_test@111.222.333.444 -vv

or

ssh user_test@111.222.333.444 -vvv

Hi @notalentgeek !

Check if you have permissions on ~/.ssh/authorized_keys with user_test. You can check them with the command ls -al and appears like this:

drwxr-xr-x 14 user_test staff 476 May 4 18:42 .atom -rw------- 1 user_test staff 13461 May 14 21:26 .bash_history -rw-r--r-- 1 user_test staff 18 May 4 17:13 .bash_profile drwx------ 123 user_test staff 4182 May 14 21:46 .bash_sessions

If you don’t have permission in the file you have to change file owner

chown user_test:user_test ~/.ssh/autorized_keys

Regards,