Descobrimos o problema.
Execução do servidor com depuração:
$sshd -Dd
Descobri que não consegui ler o auth_key
$chmod 750 $HOME
Corrigido.
EDIT: Colocando exatamente o que foi feito.
Eu preciso do SSH para localhost
sem uma senha, a maneira usual de fazer isso (com chaves públicas) não funciona.
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:~$
Então, como você pode ver no último comando, ele ainda está pedindo a senha !!! Como posso consertar isso? Ubuntu-10.04, OpenSSH_5.3p1
EDIT2:
Adicionando algumas informações sobre o 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 resulta de $ 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:
Basta verificar se os arquivos são iguais e o md5sum concorda
Antes de tudo, você deve entender o que está fazendo:
user@PC:~$ cat .ssh/id_rsa.pub | ssh localhost 'cat >> .ssh/authorized_keys'
Você está copiando a chave pública .ssh/id_rsa.pub
por meio do ssh para o mesmo host (isto é, o que é host local, o mesmo host). Se você substituir localhost
por algum outro host, isso faria mais sentido (mas se você está tentando isso para aprender a fazer isso, tudo bem).
Depois de ter uma cópia de sua chave pública no host remoto (ou a mesma em que você está), você deve garantir que você a use para autenticação, no seu host real, chamando ssh-agent
/ ssh-add
:
$ eval 'ssh-agent'
$ ssh-add
Em seguida, se você forneceu uma passphrase, será solicitado que você a digite depois de ssh-add
. Se você gerou uma chave privada sem passphrase, então é isso.
Siga os passos abaixo
ssh-keygen -t rsa -C "[email protected]"
# Creates a new ssh key, using the provided email as a label
# Generating public/private rsa key pair.
Use o arquivo padrão e a frase secreta vazia (basta pressionar enter nas próximas 2 etapas)
# start the ssh-agent in the background
eval "$(ssh-agent -s)"
# Agent pid 59566
ssh-add
Copie o conteúdo de ~ / .ssh / id_rsa.pub para ~ / .ssh / authorized_keys
Certifique-se de que as permissões sejam as seguintes
ls -l .ssh/
total 20
-rw-r--r--. 1 swati swati 399 May 5 14:53 authorized_keys
-rw-r--r--. 1 swati swati 761 Jan 12 15:59 config
-rw-------. 1 swati swati 1671 Jan 12 15:44 id_rsa
-rw-r--r--. 1 swati swati 399 Jan 12 15:44 id_rsa.pub
-rw-r--r--. 1 swati swati 410 Jan 12 15:46 known_hosts
Além disso, verifique se as permissões para o diretório .ssh são. Isso também é importante
drwx------. 2 swati swati 4096 May 5 14:56 .ssh
Acho que você pode precisar desativar a autenticação baseada em senha. Este é um sshd_config que eu uso
Port 22
Protocol 2
PermitRootLogin no
StrictModes yes
PasswordAuthentication no
ChallengeResponseAuthentication no
MaxStartups 2
AllowUsers peter paul mary
LogLevel VERBOSE
Tente algo mínimo primeiro e adicione-o à medida que precisar de recursos extras.
Atualização:
Em seu EDIT3, vejo que a autenticação de chave pública falha antes que o cliente tente autenticação baseada em senha. o syslog do seu servidor pode conter algumas mensagens do sshd que lançam alguma luz sobre isso.
Lembre-se de sinalizar sshd
para recarregar quaisquer alterações de configuração. Por exemplo. kill -HUP $(cat /etc/sshd.pid)
Em relação ao post acima, enquanto enfrenta o mesmo problema, eu apenas mudei a linha
PasswordAuthentication no
no arquivo / etc / ssh / sshd_config e funcionou.
Além disso, talvez seja melhor usar
service sshd restart
para recarregar as alterações de configuração do sshd.
Outra solução para o recurso SELinux do Red Hat Enterprise Linux 6.5 que impede o sshd de ler o $ HOME / .ssh é usar o restorecon, veja meu respondedor aqui link .
Para mim, foi tão simples quanto
cat id_rsa.pub >> authorized_keys
Eu tive o mesmo problema, fiz seguindo 3 passos para criar a senha menos login e funciona bem
1. ssh-keygen -t rsa
Press enter for each line
2. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3. chmod og-wx ~/.ssh/authorized_keys