0

I have been trying to get ssh working without a password on a Linux server. I have been looking at a lot of tutorials, but I have a lack of fundamental understanding of some key concepts.

I have an old rsa public key that I generated on my client server, which I am trying to use. I log in to the Linux server, and add my public rsa key to /home/user/.ssh/authorized_keys. I am still prompted for a password when attempting to log in.

My question is whether or not that is the correct authorized_keys file to add my key to. It seems odd that I would put it in my own user directory, but most explanations I have seen on setting up ssh tell me to put my public key in ~/.ssh/authorized_keys.

As a follow up question, is the public key that I generated years ago on my client my identifier for all shh connections or do I need to generate a new one?

UPDATE The errors that are being logged read

trying public key file /home/bsayegh/.ssh/authorized_keys
Authentication refused: bad ownership or modes for file /home/bsayegh/.ssh/authorized_keys

The permissions on the file/directory are:

-rwxrwxrwx. 1 bsayegh root     401 May 24 14:30 authorized_keys
 drwx------. 2 bsayegh root    4096 May 24 14:30 .
 drwx------. 3 bsayegh bsayegh 4096 May 25 11:38 ..
2
  • What does ssh -v show?
    – Barmar
    Jun 1, 2016 at 15:46
  • @Barmar: I just went through this exercise. ssh -v is useless for debugging it. sshd -Dd is more helpful.
    – Joshua
    Oct 11, 2016 at 23:35

1 Answer 1

2

If you have access to the log files of the machine you want to look into them. Especially /var/log/messages and /var/log/secure. Typically, you will find a message why sshd did not accept your public key authentication.

In general, you need to do the following

  1. check that sshd allows public key authentication (see /etc/ssh/sshd_config) -- I think this is default, so you at least should check that options, such as RSAAuthentication and PubkeyAuthentication are not explicitly disabled.

  2. chown -R ***(your user name)*** ~/.ssh -- you own the folder

  3. chmod 700 ~/.ssh -- only you should have access to the .ssh folder. sshd enforces this by not allowing access if this is not the case.
  4. chmod 600 ~/.ssh/id_rsa -- same as for the folder. This is required for any private key you want to use
  5. chmod 600 ~/.ssh/authorized_keys -- some sshd daemons require this to add a bit more security by not letting others know which keys they need to steal
  6. restorecon -R ~/.ssh -- when your system has SELINUX activated in order to set the attributes to make the files accessible to the sshd daemon; check with ls -Z ~/.ssh to see some ssh-related attributes on the files, e.g., ssh_home_t on RedHat systems

edit (2016-06-07) -- add some more rules

9
  • authorized_keys doesn't need to be unreadable by others. It contains public keys, those are by definition "public".
    – Barmar
    Jun 1, 2016 at 15:45
  • I have mode 644 on my authorized_keys and it works fine for me.
    – Barmar
    Jun 1, 2016 at 15:48
  • @Barmar ... you could think like that ... but it is not the case in general.
    – John
    Jun 1, 2016 at 15:48
  • Checked the Secure log and I see the error "Authentication refused: bad ownership or modes for directory /home/bsayegh/.ssh". That seems to point to what you are suggesting. Who should be the owner of the file? Currently it appears to be root. Ill set the permissions to 600. Thanks!
    – bsayegh
    Jun 1, 2016 at 15:54
  • @bsayegh That's complaining about the directory permissions, not the authorized_keys file. Use chmod 700 ~/.ssh.
    – Barmar
    Jun 1, 2016 at 15:56

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .