O servidor continua pedindo senha depois que eu copiei minha chave pública SSH para authorized_keys

43

Eu tenho um servidor Ubuntu, rodando em nuvem. Eu criei um usuário ( git ). Na pasta /home/git , criei o .ssh/ dir e o arquivo authorized_keys .

Mas, quando eu coloco minha chave pública SSH no arquivo authorized_keys , o servidor continua me perguntando a senha.

O que eu fiz de errado?

    
por Luis Dalmolin 07.03.2012 / 13:34

9 respostas

41

No lado do servidor, o daemon ssh registrará os erros em /var/log/auth.log , portanto, verifique esse arquivo para ver o que está sendo relatado.

Do lado do cliente, ao estabelecer a conexão, você pode adicionar o sinalizador -v (ou -vv ou -vvv ) para aumentar a verbosidade. Você pode identificar seu problema dessa maneira.

Aqui estão outras coisas para verificar.

  • Verifique se /home/git/.ssh/authorized_keys é de propriedade de git .
  • Verifique se /home/git/.ssh/authorized_keys tem um modo de 600 ( -rw------- ).

Verifique também o arquivo /etc/ssh/sshd_config .

  • PubkeyAuthentication deve ser definido como yes
  • Existe também a diretiva AuthorizedKeysFile , que determina o caminho onde as chaves autorizadas devem ser localizadas. Certifique-se de que é comentou ou no padrão de %h/.ssh/authorized_keys .
por xeyes 07.03.2012 / 13:56
17

Verifique também se o diretório pessoal do usuário (no seu caso, / home / git) é apenas gravável por você. Eu tive esse problema uma vez porque meu diretório pessoal era gravável em grupo. /var/log/auth.log disse: "Autenticação recusada: má propriedade ou modos para diretório / home / chuck". (isto é para ter certeza de que ele não usa um arquivo authorized_keys com o qual alguém que você tenha andado brincando!)

    
O
por centipedefarmer 14.06.2013 / 15:32
4

Existem diferentes maneiras de resolver isso: você pode configurar sshd (lado do servidor) ou ssh (lado do cliente) para não usar a autenticação por senha. Desativar a autenticação de senha no servidor torna seu servidor mais seguro, mas você terá problemas se perder sua chave.

Para tornar ssh (do lado do cliente) usando a autenticação do pubkey, adicione algumas opções ao comando ssh :

ssh -o PubkeyAuthentication=yes -o PasswordAuthentication=no -X git@server

Se isso funcionar, você pode definir a opção PasswordAuthentication=no permanentemente no arquivo de configuração do cliente ssh /etc/ssh/ssh_config system-wide ou ~/.ssh/config user-specific (em detalhes, consulte man ssh_config ).

    
por tohuwawohu 07.03.2012 / 13:48
3

Você está usando ~ / .ssh / config em sua máquina local? Eu corri para este problema quando eu uso a diretiva IdentityFile no arquivo de configuração e aponte para a chave pública. Por exemplo:

Host Cloud
    Hostname cloud.theclouds.com
    User git
    IdentityFile ~/.ssh/config/mykey # This is correct

    # IdentityFile ~/.ssh/config/mykey.pub # This is incorrect
    
por user1576 20.11.2013 / 23:09
2

Se a sua pasta pessoal estiver criptografada, o arquivo authorized_keys não será legível antes do login. Você tem que movê-lo para fora de sua casa.

Aqui é explicado e como fazer: link

    
por Fab V. 12.03.2014 / 07:59
1

Outra coisa a verificar é se há retornos extras de carro na sua chave pública. Segui o conselho acima para revisar o /var/log/auth.log e vi um erro ao ler a chave. A chave era de aproximadamente duas linhas em vez de quatro. Havia retornos de transporte extras incorporados na chave.

Ao usar o editor vi, use shift-j para unir as linhas e apague o espaço extra na string de chave.

    
por Victor 23.05.2013 / 02:02
1

Se você tiver várias chaves privadas, use a opção -v no seu comando de conexão ssh para verificar se as outras chaves primárias estão sendo usadas para tentar se conectar. Se não estiverem, diga ao cliente ssh para usá-los com o seguinte comando:

ssh-add path/to/private/key
    
por Max 17.04.2014 / 10:28
1

Você também pode adicionar sua chave ao Agente SSH:

u@pc:~$ ssh-agent bash
u@pc:~$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/u/.ssh/id_rsa: # ENTER YOUR PASSWORD
Identity added: /home/u/.ssh/id_rsa (/home/u/.ssh/id_rsa)
    
por TTT 09.09.2014 / 14:15
0

Também pode ser que você esteja chamando

sudo git clone gituser@domain:repo.git

em que a chave ssh dos usuários raiz não foi adicionada ao authorized_keys de gituser

    
por Stevie G 18.08.2015 / 20:57

Tags