Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

EDIT: Putting exactly what was done.

I need to SSH to localhost without a password, the usual way of doing it (with public keys) do not work.

user@PC:~$ rm -rf .ssh/*
user@PC:~$ ssh-keygen -t rsa > /dev/null 
Enter file in which to save the key (/home/user/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
user@PC:~$ ls .ssh/
id_rsa  id_rsa.pub
user@PC:~$ ssh-copy-id -i localhost 
The authenticity of host 'localhost (::1)' can't be established.
RSA key fingerprint is f7:87:b5:4e:31:a1:72:11:8e:5f:d2:61:bd:b3:40:1a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
user@localhost's password: 
Now try logging into the machine, with "ssh 'localhost'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

user@PC:~$ ssh-agent $SHELL
user@PC:~$ ssh-add -L
The agent has no identities.
user@PC:~$ ssh-add 
Identity added: /home/user/.ssh/id_rsa (/home/user/.ssh/id_rsa)
user@PC:~$ ssh-add -L
ssh-rsa ...MY KEY HERE

user@PC:~$ ssh-copy-id -i localhost 
user@localhost's password: 
Now try logging into the machine, with "ssh 'localhost'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

user@PC:~$ ssh localhost echo 'testing'
user@localhost's password: 

user@PC:~$ 

So as you can see in the last command it is still asking the password !!! How can I fix that ?? Ubuntu-10.04 , OpenSSH_5.3p1

EDIT2:

Adding some info about the sshd

user@PC:~$ cat /etc/ssh/sshd_config | grep Authentication
# Authentication:
RSAAuthentication yes
PubkeyAuthentication yes
RhostsRSAAuthentication no
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
ChallengeResponseAuthentication no
# PasswordAuthentication yes
#KerberosAuthentication no
#GSSAPIAuthentication no
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.

EDIT3: Ading result from $ssh -vv localhost

$ssh -vv localhost
...
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/user/.ssh/identity
debug1: Offering public key: /home/user/.ssh/id_rsa
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/user/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug1: Next authentication method: password
user@localhost's password: 

EDIT4:

Just checking if the files are the same and the md5sum agree

share|improve this question
    
Do you have RSAAuthentication yes and PubkeyAuthentication yes in your /etc/ssh/sshd_config ? What does ssh -vv localhost show? I just tried this on a 10.04 box and had no problem.. –  Doon Sep 16 '11 at 3:33
    
Hy Doon, indeed.. I have both to yes .. I added the output of ssh -vv in the question. –  Canesin Sep 16 '11 at 3:54
    
Why do you need to ssh to localhost if you already have access? –  vtest Sep 16 '11 at 10:06
    
Parallel processing softwares use local ssh/rsh –  Canesin Sep 16 '11 at 11:21
    
Please don't post the answer in the question or put "SOLVED" in the title. You've done the right thing by providing an answer. Once you've accepted the answer the system will show that the problem is solved. –  ChrisF Sep 16 '11 at 11:28

5 Answers 5

First of all, you should understand what your doing:

user@PC:~$ cat .ssh/id_rsa.pub | ssh localhost 'cat >> .ssh/authorized_keys'

You are copying the public key .ssh/id_rsa.pub through ssh, to the same host (that is what localhost is, the same host). If you replace localhost with some other host, that would make more sense (but if you are trying this for the sake of learning how to do it, that's ok).

Once you have a copy of your public key on the remote host (or the same one you're in), you have to make sure that you use it for authentication, in your actual host, calling ssh-agent / ssh-add:

$ eval `ssh-agent`
$ ssh-add

Then, if you provided a passphrase, you'll be requested to enter it after ssh-add. If you generated a private key without passphrase, then that's it.

share|improve this answer
    
Yes, I understand the commands, I just put that way to make it clear that I did the usual stuff with the keys. I did ssh-add ... it don't ask the passphrase (as I used none in the creation) .. but again, doing, $ ssh localhost ls, it asks for the password –  Canesin Sep 16 '11 at 2:52
    
So if you did execute ssh-add, please edit your question and put everything you did. The more information you give, the better and quicker the answer. –  Torian Sep 16 '11 at 3:31
    
Sorry for that, fixed now.. I added the terminal, did all again to paste here.. –  Canesin Sep 16 '11 at 3:42
    
Thanks a million times! BTW, why "eval"? –  ProblemFactory Oct 4 '13 at 10:41
up vote 2 down vote accepted

Have discovered the problem.

Running the server with debuging:

$sshd -Dd

I found it was not able to read the auth_key

$chmod 750 $HOME

Fixed it.

share|improve this answer
    
What were the previous file flags? –  bbaja42 Sep 16 '11 at 14:13

Simplify the server config

I think you may need to disable password-based authentication. This is an sshd_config I use

Port 22
Protocol 2
PermitRootLogin no
StrictModes yes
PasswordAuthentication no
ChallengeResponseAuthentication no
MaxStartups 2
AllowUsers peter paul mary
LogLevel VERBOSE

Try something minimal first, then add to it as you need extra capabilities.


Update:

Check server logs

From your EDIT3 I see that the public-key authentication fails before the client attempts password-based authentication. your server's syslog may contain some messages from sshd that shed some light on this.

Reload changed configs

Remember to signal sshd to reload any config changes. E.g. kill -HUP $(cat /etc/sshd.pid)

share|improve this answer
    
I think disabling password authentication when he can't even get in without the password would be the last thing he wants to do (locking himself out completely) –  Amalgovinus Jun 17 at 21:02
    
@Amalgovinus: The question has been extensively edited since I posted my initial answer. I suppose I could delete this answer. –  RedGrittyBrick Jun 17 at 22:48

Regarding the above post, while facing the same problem, I just changed the line

PasswordAuthentication no

in the /etc/ssh/sshd_config file and it worked.

Moreover, perhaps it is better to use

service sshd restart

to reload sshd config changes.

share|improve this answer

Another solution for Red Hat Enterprise Linux 6.5 SELinux feature preventing sshd from reading $HOME/.ssh is to use restorecon, see my answser here http://superuser.com/a/764020/213743.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.