Tentando fazer a autenticação ssh com arquivos de chave: servidor recusou nossa chave

45

Estou tentando configurar a autenticação do ssh com arquivos de chave em vez do nome de usuário / senha. O cliente é uma caixa do Windows que executa o PuTTY e o servidor é um servidor Ubuntu 12.04 LTS.

Eu baixei puttygen.exe e tive que gerar um par de chaves. Em /etc/ssh/sshd_config eu tenho esta linha:

AuthorizedKeysFile %h/.ssh/authorized_keys

e no arquivo de chave pública do meu cliente diz isso:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "[email protected]"
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAr3Qo6T5XU06ZigGOd3eKvfBhFLhg5kWv8lz6
qJ2G9XCbexlPQGanPhh+vcPkhor6+7OmB+WSdHeNO652kTofnauTKcTCbHjsT7cJ
GNrO8WVURRh4fabknUHPmauerWQZ6TgRPGaz0aucU+2C+DUo2SKVFDir1vb+4u83
[email protected]
---- END SSH2 PUBLIC KEY ----

Copiei a parte de "ssh-rsa AAA" para "[email protected]" e coloquei no arquivo ~/.ssh/authorized_keys no meu servidor (na minha própria homefolder). No PuTTY em Conexão > SSH > Auth Eu digitei o caminho para a chave privada que gerou no meu cliente e salvei as configurações da sessão.

Eu reiniciei o servidor ssh com

sudo service ssh restart

Agora, se eu carregar o perfil no PuTTY (verifiquei que a chave privada ainda está em Connection > SSH > Auth e que o caminho está correto) e execute o perfil, ele diz

Server refused our key

Eu tentei colocar a chave pública em um arquivo no diretório ./ssh/authorized_keys/ , mas isso não ajudou, então usei ./ssh/authorized_keys como arquivo , colando o arquivo chave nele. Eu também tentei gerar um par de chaves privada / pública no servidor, colocando a chave pública em ./ssh/authorized_files e carregando a privada em PuTTY no meu cliente. A reinicialização do servidor também não ajudou.

Descobri que o erro pode ser resolvido colocando a chave em um local fora da pasta pessoal do usuário, mas isso é útil apenas se a pasta principal estiver criptografada, o que não é possível.

Também tentei gerar uma chave de 4096 bits, pensando que talvez 1024 fosse muito curto.

Como posso fazer isso funcionar? Obrigado!

EDITAR:

Ok, /var/log/auth.log disse:

sshd: Authentication refused: bad ownership or modes for directory /home/vorkbaard/.ssh

O Google informa que ~/.ssh/ deve ser 700 e ~/.ssh/authorized_keys deve ser 600, então eu fiz isso. Agora /var/log/auth.log diz:

sshd: error: key_read: uudecode AAAAB3N [etc etc etc until about 3/4 of my public key]
    
por Forkbeard 11.06.2013 / 13:06

14 respostas

81

Ok, ele foi corrigido, mas não vejo como isso é diferente do que eu já tentei.

O que eu fiz:

  • gera um par de chaves com o puttygen.exe (tamanho: 1024 bits)
  • carrega a chave privada no perfil do PuTTY
  • insira a chave pública em ~/.ssh/authorized_keys em uma linha (precisa começar com ssh-rsa )
  • chmod 700 ~/.ssh
  • chmod 600 ~/.ssh/authorized_keys
  • chown $USER:$USER ~/.ssh -R
  • altere /etc/ssh/sshd_config para que contenha AuthorizedKeysFile %h/.ssh/authorized_keys
  • sudo service ssh restart

Para a solução de problemas, use # tail -f /var/log/auth.log .

Obrigado pela sua ajuda!

    
por Forkbeard 11.06.2013 / 15:12
20

Acabei de encontrar este problema. Apesar de ter o config configurado corretamente como já foi mencionado neste thread (permissões em authorized_keys etc.), acontece que eu tinha a chave pública no formato errado. Foi na forma de:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "imported-openssh-key"
AAAAB3NzaC1yc2EAAAADAQABAAABAQDUoj0N3vuLpeviGvZTasGQ...
... lPmTrOfVTxI9wjax2JvKcyE0fiNMzXO7qiHJsQM9G9ZB4Lkf71kT
---- END SSH2 PUBLIC KEY ----

O que não estava funcionando. Mas conseguiu que funcionasse na forma:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDU.....j0N3vuLpeviGvZTasGQa1rcJiPXQMW7v3uurb+n94B9MQaaWR0odsg5DJQL92TNenOda5BO1nd08y6+sdLQmHXExTz6X8FzgoVsAkEl3RscxcxHUksiKA9JfTo38vQvG/bPxIHMCuSumCQVA1laf3rO/uOrkcB7iMWhaoi1/z6AbFtPzeh7xjGfInMWwtBI0CsHSRF73VWIxT26w0P+KjafCjSn/7vDO1bT8QHujSQelU/GqaVEvbbvPl1a7POVjKgHLNekolwRKfNeVEewcnmZaoqfHgOKlPmTrOfVTxI9wjax2JvKcyE0fiNMzXO7qiHJsQM9G9ZB4Lkf71kT UserName@HOSTNAME
    
por kuraara 16.08.2015 / 11:18
9

o problema é que o windows usa uma nova linha diferente do linux, então ao copiar a chave do windows para o linux, existe um \ n no final do linha que você não pode ver no linux no editor.

Se você seguir o /var/log/auth.log e tentar efetuar login, o erro será:

% bl0ck_qu0te%

Se você alterar sua chave no windows para que fique em uma única linha sem uma nova linha no final e copie-a para o linux, ela deve funcionar (fez o truque para mim).

    
por Mischa 22.02.2015 / 23:44
7

Eu tive que alterar as permissões para o diretório inicial

chmod 700 ~
    
por Michal Zmuda 09.03.2014 / 21:31
6

Eu tive que alterar as permissões do diretório ~ / .ssh de 770 para 700 e as permissões do arquivo ~ / .ssh / authorized_keys de 660 para 600.

Por algum motivo, a remoção de permissões de grupo corrigiu esse problema para mim.

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
    
por dopple 07.01.2014 / 14:25
5

O arquivo ~/.ssh/authorized_keys requer que as chaves estejam todas em uma linha. Se você adicionou em várias linhas, como na pasta acima, tente unir as linhas.

    
por Paul 11.06.2013 / 13:57
1

Além de todas as respostas acima, certifique-se de copiar e colar a chave de puttygen corretamente!

Se você clicar duas vezes na maior parte da string da chave para selecioná-la, talvez não receba a string inteira, porque a caixa de texto divide linhas em alguns caracteres, como + , de modo que você não selecione o texto após o caractere + (que você não pode ver porque a caixa de texto é muito pequena). Certifique-se de selecionar toda a string manualmente, de ssh-rsa até o final da caixa de texto.

    
por Mark Lakata 26.02.2014 / 19:43
1

Às vezes, pode ser um problema associado a ter a chave pública em uma linha, essa abordagem parece resolvê-lo

echo 'the content of the public key' > /root/.ssh/authorized_keys
    
por dav 10.05.2014 / 18:34
1

para mim, o problema foi que eu criei ~/.ssh/authorized_keys usando root para que fosse root. Eu tive que chown sshuser:sshuser ~/.ssh/authorized_keys então começou a trabalhar

    
por PeanutPower 18.02.2015 / 03:06
1

Eu também enfrentei esse erro e resolvi isso alterando as permissões do arquivo authorized_keys para 600 .

chmod 600 ~/.ssh/authorized_keys
    
por Kaleem 06.03.2015 / 12:17
1

Veja o que funcionou para mim:

Em puttygen , depois de gerar as chaves, copie e cole as informações do campo superior para acessar o arquivo authorized_keys. Se você salvar sua chave pública em sua máquina cliente e, em seguida, abri-la, o texto será diferente do texto na parte superior da tela puttygen . Novamente, certifique-se de copiar e colar o texto da parte superior da tela puttygen (depois de criar as chaves) no arquivo authorized_keys, que deve estar localizado em ~/.ssh .

    
por zach 05.05.2015 / 20:01
0

O erro comum é que as pessoas usam o editor de texto (como o Vim) e colam o texto copiado antes de ativar a "inserção" (pressione + i no Vim antes de colar)

    
por hakabe 26.10.2015 / 18:53
0

Na verdade, alterei a permissão de authorized_keys para 644 e, em seguida, resolvi o problema.

chmod 644 ~/.ssh/authorized_keys
    
por Peter Liang 04.12.2015 / 03:06
0

Eu estava criando os arquivos .ssh e authorized_keys enquanto estava logado como root, o que dava as permissões erradas. Ele também colocou todos os arquivos no diretório raiz. Eu acredito que é a raiz de muitos dos problemas com "servidor recusado chave".

Alterar a propriedade desses arquivos para o usuário que você deseja não será uma boa prática, então refiz meus passos e me certifiquei de que estava logado como o usuário com o qual eu queria utilizar o SSH e criei novamente o .ssh e authorized_keys. Erro.

Instruções para conectar o Win7 ao servidor Xubuntu 15.04: Como criar chaves SSH w / Putty para conectar-se a um VPS

    
por Leo F 05.08.2015 / 22:09