O servidor continua solicitando a senha depois que eu copiei minha chave pública SSH em

44

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

Mas, quando coloco minha chave pública SSH no authorized_keysarquivo, o servidor continua a me perguntar a senha.

O que eu fiz errado?

Luis Dalmolin
fonte
Onde você coloca seu público? no usuário git ou na raiz? como você acessa isso? como ssh <you> @ <server> o <git> @ <server> ou root @ <server> .. verifique isso e adicione mais informações.
precisa saber é o seguinte

Respostas:

42

No lado do servidor, o daemon ssh registrará erros /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 a -vsinalização (ou -vvou -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 o /home/git/.ssh/authorized_keysmodo 600 ( -rw-------).

Verifique também o /etc/ssh/sshd_configarquivo.

  • PubkeyAuthentication deve ser definido como yes
  • Há também a AuthorizedKeysFilediretiva que determina o caminho onde as chaves autorizadas devem estar localizadas. Verifique se está comentado ou no padrão de %h/.ssh/authorized_keys.
xeyes
fonte
Obrigado! Vou tentar essas opções e voltar mais tarde para feedback!
Luis Dalmolin
O que você faz se não vê um /var/log/auth.logarquivo? Existe uma maneira de ativar isso?
9183 Steve Robbins
1
Logs pode estar em var / log / / seguro Se você não tiver um /var/log/auth.log
CoverosGene
Erro bobo, eu tinha scp-ed o arquivo .pub dentro da pasta .ssh no servidor ao qual eu queria me conectar. Certifique-se de movê-lo para a pasta allowed_keys.
CenterOrbit
Eu também tive que remover permissões de gravação de grupo do meu diretório pessoal. Então reiniciei o ssh com #sudo service ssh restart
Dylan Pierce
19

Verifique também se o diretório inicial do usuário (no seu caso, / home / git) é apenas gravável por você. Tive esse problema uma vez porque meu diretório pessoal era gravável em grupo. /var/log/auth.log disse: "Autenticação recusada: propriedade inadequada ou modos para o diretório / home / chuck". (isso é para garantir que ele não use um arquivo allowed_keys com que alguém que não seja você esteja mexendo!)

centipedefarmer
fonte
Embora isso seja certamente útil, acho que isso é mais uma adição à resposta dos xeyes .
gertvdijk
1
Oh meu Deus, muito obrigado! Meus olhos estavam ardendo porque toda a pesquisa que fiz no google. Finalmente funcionou! Muito obrigado.
GTRONICK
Cara obrigado! Passei horas procurando uma solução ... e isso resolveu todos os meus problemas.
Afaria
Sim. foi isso. i contente decidiu ler a próxima resposta para baixo
Katushai
Verifique também em / etc / passwd qual é o diretório inicial do usuário. Meu problema bizarro era que não tinha um padrão
drodsou 15/01
5

Existem diferentes maneiras de resolver isso: você pode configurar sshd(do lado do servidor) ou ssh(do 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 a chave.

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

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

Se isso funcionar, você pode definir a PasswordAuthentication=noopção permanentemente no arquivo de configuração do cliente ssh em todo o /etc/ssh/ssh_configsistema ou ~/.ssh/configespecífico do usuário (em detalhes, consulte man ssh_config).

tohuwawohu
fonte
1
Por padrão, todas as configurações do cliente SSH ( /etc/ssh/ssh_config) nos sistemas Debian / Ubuntu já preferem PubkeyAuthentication e tente isso primeiro, como você verá ao chamar sshno modo detalhado.
gertvdijk
3

Você está usando ~ / .ssh / config em sua máquina local? Eu me deparei com esse problema quando uso a diretiva IdentityFile no arquivo de configuração e aponto 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
user1576
fonte
1

Outra coisa a verificar é se há retornos de carro extras em 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 tinha aproximadamente duas linhas, em vez de quatro. Havia retornos de carro extras incorporados na chave.

Ao usar o editor vi, use shift-j para unir as linhas e apagar o espaço extra na cadeia de teclas.

Vencedor
fonte
1
Eu tripliquei as permissões e sshd_config. Bati minha cabeça contra a parede por meia hora. Este foi o meu erro! De alguma forma, adquiri o hábito de encerrar todos os arquivos que eu edito com uma quebra de linha extra. Mesmo com uma chave e um retorno de carro no final , é suficiente para atrapalhar a autorização.
Jrhorn424
Certifique-se de que você também possui o bit ----- END RSA PRIVATE KEY -----.
precisa saber é o seguinte
1

Se você tiver várias chaves privadas, use a opção -v no comando ssh connection para verificar se suas 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
Máx.
fonte
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)
TTT
fonte
0

Também pode ser que você esteja ligando

sudo git clone gituser@domain:repo.git

em que a chave ssh dos usuários root não foi adicionada ao authorized_keysdegituser

Stevie G
fonte
0

Em uma máquina executando o Ubuntu 18.04.02 LTS, a sugestão de definir permissões de ~/.ssh600 não funcionou para mim. Eu tive que definir as permissões para 700 e as coisas funcionaram bem.

azaghal
fonte
0

Eu tinha minhas permissões de arquivo .ssh / directory e allowed_keys corretas, mas encontrei esse problema de "solicitação de senha" devido a um problema autoinduzido diferente.

Eu usei um destaque baseado em mouse e copie / cole para copiar as informações do meu id_rsa.pub local no arquivo allowed_keys no servidor. Isso copiou com êxito os dados como uma única linha, mas havia espaços indesejados no final das linhas visíveis que eram difíceis de ver ao editar o arquivo com o vi. Depois de remover esses espaços indesejados, eu poderia ssh muito bem.

Keith
fonte
0

Então, o que aconteceu comigo é que tenho 2 VMs para acessar da minha máquina local (2 chaves id_rsa.pub e id_rsa2.pub). Percebi que minha conexão ssh está usando id_rsa.pub por padrão para qualquer conexão ssh [email protected]. Resolvi meu problema adicionando um arquivo de configuração e especifique a identidade a ser usada para todos os hosts, como o seguinte:

vi ~/.ssh/config

Add both hostnames and their identity file as follows:

Host server1.nixcraft.com
  IdentityFile ~/Users/.ssh/id_rsa1
Host server2.nixcraft.com
  IdentityFile /backup/home/aymen/.ssh/id_rsa2
Aymen Alsaadi
fonte