A autenticação por chave pública SSH não funciona [duplicada]

8

Estou tendo problemas para configurar a autenticação de chave pública para um servidor SSH no Ubuntu Server 12.04 (A) para autenticação em um servidor Ubuntu 13.04 (B).

O que estou fazendo agora (estou tentando seguir as instruções aqui ):

  • Em B: crie uma nova chave com ssh-keygen -C "" , sem frase-senha, escrevendo para /.ssh/id_rsa - não recebo erros
  • Em B: executar ssh-copy-id -i /.ssh/id_rsa user@host-a - também, uma mensagem de sucesso
  • Em B: ssh -i /.ssh/id_rsa user@host-a - ainda tenho que digitar minha senha para user@host-a

Em A, verifiquei se o /.ssh/authorized_keys foi modificado depois de executar ssh-copy-id , e esse é o caso. Além disso, em ambos os dispositivos, adicionei isso a /etc/ssh/sshd_config :

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile /.ssh/authorized_keys

Alguém sabe qual pode ser o problema aqui?

Aqui está o final do meu /var/log/auth.log na máquina A:

Jun 13 22:17:56 laptop-camil sshd[12344]: Server listening on 0.0.0.0 port 22.
Jun 13 22:17:56 laptop-camil sshd[12344]: Server listening on :: port 22.
Jun 13 22:18:27 laptop-camil sshd[12345]: Authentication refused: bad ownership or modes for directory /.ssh
Jun 13 22:18:30 laptop-camil sshd[12345]: Accepted password for camilstaps from 164.138.27.37 port 48407 ssh2
Jun 13 22:18:30 laptop-camil sshd[12345]: pam_unix(sshd:session): session opened for user camilstaps by (uid=0)
Jun 13 22:18:35 laptop-camil sshd[12464]: Received disconnect from 164.138.27.37: 11: disconnected by user
Jun 13 22:18:35 laptop-camil sshd[12345]: pam_unix(sshd:session): session closed for user camilstaps
Jun 13 22:18:42 laptop-camil sshd[12516]: Authentication refused: bad ownership or modes for directory /.ssh
Jun 13 22:18:44 laptop-camil sshd[12516]: Connection closed by <host-b> [preauth]
    
por Keelan 13.06.2013 / 22:11

5 respostas

7

Algo nos arquivos de log, particularmente /var/log/auth.log ? Você também pode verificar as permissões no diretório e nos arquivos .ssh.

Eu não tive que modificar o sshd_config para esse tipo de acesso, eu mesmo. Eu estou querendo saber se sua modificação quebrou as coisas, especialmente a linha AuthorizedKeysFile. Normalmente, você desejaria colocar as authorized_keys em $USER/.ssh .

Aqui está a permissão de um usuário em um dos meus servidores:

:~/.ssh$ ls -ld .
drwx------ 2 rrd rrd 4096 May 28 17:57 .

:~/.ssh$ ll
total 280
-rw-r----- 1 rrd rrd   4351 May 22 16:20 authorized_keys
-rw------- 1 rrd rrd   1679 Apr 27  2012 id_rsa
-rw-r--r-- 1 rrd rrd    399 Apr 27  2012 id_rsa.pub
-rw-r--r-- 1 rrd rrd 266138 Jun 13 00:18 known_hosts

Verifique se os arquivos individuais são pelo menos restritos.

Como aponta guntbert, verifique também se o diretório e os arquivos são de sua propriedade. As permissões não farão sentido (ou funcionarão) de outra forma.

Quem possui as chaves em authorized_keys em B? (O bit que diz user @ host após a chave.) É root @ A?

Ou seja, ao analisar ~/.ssh/authorized_keys , qual é o equivalente a bert@etherbert para sua configuração:

ssh-rsa AAAA...ffsII8dSaDF33 bert@etherbet

Gostaria apenas de editar manualmente as chaves remotas do .ssh / authorized para testes, colocando o conteúdo id_rsa.pub do usuário com o qual você está conectando.

Verifique se você está vindo do usuário que possui a chave no arquivo remote_keys remoto.

    
por belacqua 13.06.2013 / 22:15
3

O diretório ~/.ssh DEVE ser de propriedade do usuário, não raiz. Então mude isso e vai funcionar.

Para evitar ter que digitar a frase secreta da sua chave privada toda vez que você usar o ssh-agent. ssh-add .ssh/id_rsa adicionará a chave ao agente, a partir de então o agente fornecerá a chave para o ssh.

    
por user1721265 13.06.2013 / 22:44
2

Além de todos os outros caras terem fornecido as soluções, minha sugestão adicional é que você primeiro verifique o arquivo de registro: /var/log/secure , que é onde o sshd coloca os logs. Se algo der errado, verifique o que o sshd reclamou em /var/log/secure diminuirá rapidamente os possíveis problemas.

    
por Meow 22.01.2016 / 14:12
2

Esta é uma pergunta antiga e já respondida, mas se o usuário tiver o diretório inicial criptografado (usando ecryptfs ou algo assim), o daemon ssh não poderá ver o arquivo ~ / .ssh / authorized_keys. Se esse for o caso, siga a solução listada aqui .

Esta solução recomenda alterar a configuração do sshd (/ etc / ssh / sshd_config) e alterar AuthorizedKeysFile para /etc/ssh/%u/authorized_keys e copiar seu arquivo authorized_keys para o arquivo / etc / ssh / username / authorized_keys (juntamente com a propriedade apropriada para / etc / ssh / username e permissões adequadas, conforme exigido pelo sshd).

    
por journeyer 15.04.2016 / 07:12
0

Nada funcionou para mim. Eu não sei porque? Eu tentei cada solução.

Primeiro

  

ssh-copy-id: não copiou id_rsa & amp; id_rsa.pub

Segundo

  

ssh-agent $ SHELL

     

ssh-add -L

     

ssh-add

     

ssh-copy-id -i host remoto

Ambos não funcionaram. Eu acho que sou azarado. Alguém estava dizendo para alterar a permissão da pasta .ssh do root. Eu pensei que não seria uma opção melhor. O que eu estava fazendo quando meu caso acima falhou. Eu criei uma nova chave no servidor e salvei essa chave no github / gitlab. Isso também não é legal. Aqui eu tentei uma alternativa, espero que possa ajudar alguém.

Primeiro eu crio uma pasta no servidor remoto com essa permissão de usuário que pode gravar nela. Então eu sigo os passos abaixo na minha máquina local

  

cd ~ / .ssh

     

scp -r *   [email protected]. **: path_to_writable_folder_on_remote_server

E então eu entrei no servidor remoto e depois

  

cd path_to_that_folder_where_I_copied_keys

& amp; Então

  

mv * ~ / .ssh

(ufa) Finalmente, funcionou.

    
por Vineet 11.11.2016 / 12:53