O login SSH usando a chave pública falhou

7

No host local executando o serviço sshd. Criado dois pares de chaves rsa para root e user1 usando ssh-keygen. Copiado de root / .ssh / id_rsa.pub para user1 / .ssh / id_rsa.pub. Permissões alteradas para 600. Tentei ssh -l user1 localhost e ssh -l root localhost , mas ambas falharam com Permissão negada (publickey, keyboard-interactive). . Eu tenho que copiar a chave pública para a pasta ~/.ssh para ambos os usuários? O que há de errado com a configuração? Por que não consigo me conectar ao host local?

Arquivo /etc/ssh/sshd_config :

RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication yes
UsePAM no
AllowUsers user1 root
PermitRootLogin yes

No arquivo /etc/ssh/ssh_config estão as linhas não comentadas:

   RSAAuthentication yes
   PasswordAuthentication no
   ForwardX11 no
    SendEnv LANG LC_*
    HashKnownHosts yes
    GSSAPIAuthentication yes
    GSSAPIDelegateCredentials no
   PubkeyAuthentication yes

EDIT 1

Estou tentando se conectar ao host local. Eu tenho que ser capaz de fazer o login no user1 usando apenas a chave pública, enquanto é possível fazer login como root com chave pública e / ou senha.

EDIT 2

Eu copiei cp ~/.ssh/id_rsa.pub /home/user1/.ssh/authorized_keys . Permissões alteradas chmod -R 700 ~/.ssh e chmod -R 700 /home/user1/.ssh . Reiniciado sshd 'serviço ssh restart'. Mas parece que não está funcionando.

EDIT 4

root@ubuntu:~# ssh-copy-id user1@localhost
The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is 34:29:b6:1b:fe:84:eb:82:85:77:87:f6:25:39:61:5a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
Permission denied (publickey,keyboard-interactive).

root@ubuntu:~# ssh-copy-id root@localhost
Permission denied (publickey,keyboard-interactive).

Log:

# tail /var/log/auth.log

... ubuntu sshd[8476]: User root not allowed because account is locked

Um bom artigo sobre problemas SSH: Problemas e soluções

    
por J.Olufsen 22.04.2012 / 15:36

6 respostas

7

Eu me deparei com esse problema quando tentei fazer o login em uma conta que não tem senha, mesmo que eu use autenticação de par de chaves SSH e tenha o login de senha desativado. A solução foi definir uma senha usando minha conta root:

passwd user1
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
    
por 04.04.2013 / 21:49
4
  1. Sempre que um problema for encontrado em um servidor, é sempre melhor adicionar o sinal -v , por exemplo,

    $ ssh -v host -l user
    
  2. Em ambos os casos acima, a chave pública ( id_rsa.pub ) deve ser adicionada ao arquivo ".ssh / authorized_keys" do usuário remoto. No seu caso acima, tanto para root e user1. Isso pode ser feito facilmente através do comando ssh-copy-id .

  3. /var/log/secure manterá pistas de por que o login não foi bem-sucedido.

  4. As permissões do diretório devem ser 700 [rwx] (não 600) [rw -]

por 22.04.2012 / 16:03
2

Encontrei um problema parecido há algum tempo tentando fazer um

chmod -R 600 ~/.ssh 

Aparentemente, se as permissões de arquivo estiverem corretas, mas as permissões do diretório não forem do mesmo tipo, o erro de permissão poderá aparecer.

Eu também acho que você precisa renomear o arquivo de id_rsa.pub para authorized_keys.

    
por 22.04.2012 / 15:46
1

Algumas notas: Como você desativou especificamente a autenticação de senha, não é possível fazer o login com senha. Eu acredito que você tem que configurar os usuários permitidos com algum outro (Match User é possivelmente a melhor maneira de avançar). Além disso, você precisa permitir especificamente o usuário root (PermitRootLogin configurá-lo como yes).

    
por 22.04.2012 / 16:21
1

Faz sentido fornecer mais algumas informações sobre as configurações em /etc/ssh/sshd_config , em particular StrictModes ( grep StrictModes /etc/ssh/sshd_config ). StrictModes é a configuração que determina o quanto o sshd reage às permissões de arquivo e pasta de cada usuário ~/.ssh e ~/.ssh/authorized_keys . Você também não nos forneceu a configuração de AuthorizedKeysFile em seu sshd_config . Muito relevante, se o seu servidor SSH estiver procurando pelo arquivo em algum lugar diferente do que você o colocou.

Mas, além das respostas até agora, pode haver uma infinidade de razões para isso. O problema é que, mesmo que você tenha tentado, não há informações suficientes para adivinhar o que está errado.

Mais uma coisa pode ser restrições do PAM ( UsePAM in sshd_config ). O Ubuntu costumava ter isso em algum momento. Se a conta de usuário não tiver um conjunto de senhas (autenticação somente de chave pública), isso não será permitido.

Mas deixe-me dar um método genérico para depurar esses problemas.

Solução de problemas genérica de sshd

O que eu acho geralmente muito útil em tais casos é iniciar sshd sem deixar que ele seja daemonize ("entrar em segundo plano e desconectar do terminal"). Frequentemente, os logs não serão muito úteis, especialmente quando você tem um erro de configuração (o que não é o caso óbvio, pelo menos).

Você começa do terminal assim:

# $(which sshd) -Ddp 10222

Isto lhe dará uma grande quantidade de resultados de depuração que de outra forma não apareceriam (sem o -d ) ou terminariam nos registros se você tiver sorte.

NB: o $(which sshd) é o melhor método para satisfazer o requisito sshd de um caminho absoluto. Caso contrário, você receberá o seguinte erro: sshd re-exec requires execution with an absolute path . O -p 10222 faz com que sshd ouça nessa porta alternativa, sobrescrevendo o arquivo de configuração - isso é para que ele não entre em conflito com as instâncias sshd potencialmente em execução. Certifique-se de escolher uma porta livre aqui.

Esse método me ajudou muitas vezes a encontrar problemas, seja problemas de autenticação, problemas de desempenho ou outros tipos de problemas. Para obter uma saída realmente detalhada para stdout , use $(which sshd) -Ddddp 10222 (observe o dd adicionado para aumentar a verbosidade). Para mais bondade de depuração, verifique man sshd .

No lado do cliente ssh pode levar -v (até -vvv ) para ser realmente detalhado sobre o que está fazendo.

A linha de log

... ubuntu sshd[8476]: User root not allowed because account is locked

sugere que, sendo esse o problema, execute:

sudo passwd -u root
    
por 04.04.2013 / 22:02
1

No CentOS, o selinux pode bloquear a autenticação. Para resolver o problema usando o comando:

restorecon -Rv ~ /. ssh
    
por 13.06.2013 / 15:46