O ssh não permite mais a autenticação de chave pública


22

Minha máquina parou recentemente de aceitar a autenticação de chave pública recebida. Eu tenho um desktop ubuntu 11.04 no qual ssh em uma máquina Windows. Eu uso massa de vidraceiro com concurso. Consigo me conectar, mas apenas com autenticação de senha interativa, não com minha chave rsa que eu configurei.

Eu já verifiquei que a chave está listada em ~ / .ssh / allowed_keys. Como faço para corrigir isso e o que verifico?


2
Primeiro, verifique se todos os três ~, ~/.sshe ~/.ssh/authorized_keyssão apenas gravável por você (em particular permissão de escrita grupo não). Procure /var/log/auth.logentradas de log criadas no momento de suas tentativas de login. Copie e cole-os na sua pergunta (editando nomes para privacidade, se quiser). Verifique também se o problema está do lado do servidor ou não: copie a chave privada para a máquina Linux (você precisará converter o arquivo da chave privada do PuTTY no formato OpenSSH) e veja se ssh localhostfunciona.
Gilles 'SO- stop be evil'

meu diretório pessoal era gravável por algum motivo. Isso consertou. Coloque isso como uma resposta para que eu possa aceitá-lo.
Andrew Redd

Respostas:


28

Se a autenticação de chave pública não funcionar: verifique se, no lado do servidor, seu diretório pessoal ( ~), o ~/.sshdiretório e o ~/.ssh/authorized_keysarquivo são todos graváveis apenas pelo proprietário . Em particular, nenhum deles deve ser gravável pelo grupo (mesmo que o usuário esteja sozinho no grupo). chmod 755ou chmod 700está ok, chmod 770não está.

O que verificar quando algo está errado:

  • Execute ssh -vvvpara ver muita saída de depuração. Se você postar uma pergunta perguntando por que não pode se conectar ao ssh, inclua esta saída (convém anonimizar os nomes de host e usuário).
  • Se puder, verifique os logins do servidor /var/log/auth.log.
  • Se a autenticação de chave pública não estiver funcionando, verifique as permissões novamente, especialmente o bit do grupo (veja acima).

(do wiki da U&L , copiado para a AU )
Gilles 'SO- stop be evil' (

1
Boa resposta! Eu esqueci meu homedir: o
RobAu

Se você estiver executando a versão recente do ssh (ou sshd), as chaves DSA não serão mais suportadas por padrão devido a problemas de segurança. A única correção real é atualizar para RSA ou chaves melhores.
Mikko Rantalainen

Alterei as permissões da minha pasta pessoal e o quê? Eu estava trancado fora do SSH! Mudei as teclas ssh, não, o servidor ainda se recusa a conectar! Eu estava louco tentando encontrar uma solução e com a sua resposta do chmod 700 na minha pasta pessoal, o ssh começou a funcionar !!!!!!! Obrigado! Se minha conexão com o terminal caísse ao tentar encontrar a solução, eu estaria totalmente bloqueado no servidor. Portanto, cuidado para não brincar com as permissões da sua pasta pessoal! (Eu só mudei meus permissões de pasta casa, não pasta .ssh mas ainda trancado para fora de SSH)
Tarik


5

Se você verificar as permissões nos diretórios, e houver um "." logo após eles, você pode ter o selinux ativado, o que prejudicará a troca de chaves e o padrão para identificação manual de senha.

Você pode desativar o SELinux para solucionar problemas seguindo as instruções aqui: http://www.centos.org/docs/5/html/5.1/Deployment_Guide/sec-sel-enable-disable-enforcement.html ou apenas edite o arquivo / etc / selinux / config e altere-o de "reforçando" para "desativado".

Espero que isto ajude.


Eu tinha o selinux ativado, mas desativá-lo não pareceu corrigi-lo. Qual foi o truque para mim chmod 600 ~/.ssh/authorized_keys- o arquivo pode ser gravado em grupo. (via pyrosoft.co.uk/blog/2013/01/12/… )
David Carboni

Isso me ajudou! Obrigado!
907th 14/10

Você também deve conseguir que a autenticação SSH funcione com o SELinux, definindo os contextos corretos do SELinux. Restaurar os contextos configurados pelo sistema em seu diretório pessoal ( restorecon ~ -R) é um bom ponto de partida.
Josh Kelley

4

Eu garantiria que suas configurações no / etc / ssh / sshd_config estejam corretas.

Para forçar o uso apenas de PKI e não permitir senhas, encontre a linha

#PasswordAuthentication yes 

no seu arquivo, remova o comentário e defina-o como

PasswordAuthenticate no

Também leria o balanço das configurações para garantir que elas fizessem sentido. Em particular, tente garantir o uso de chaves RSA, pois o DSA é comprometido.


11
Você está explicando como desativar a autenticação de senha. Isso não ajudará a fazer a autenticação de chave pública funcionar (a chave pública é tentada primeiro). Andrew: não desative a autenticação por senha até ter certeza de que a autenticação por chave pública funciona!
Gilles 'SO- stop be evil'

2

Uma causa possível do problema é que você possui chaves DSA, mas agora o SSH (aparentemente) assume o padrão de exigir chaves RSA. Eu tive o problema ao atualizar para o 16.04. Você pode ver mais aqui, mas a resposta curta é adicionar o seguinte a ~/.ssh/config:

PubkeyAcceptedKeyTypes ssh-dss

1

Corrigi esse problema cancelando o comentário "PasswordAuthentication yes" em / etc / ssh / sshd_config.


1

Devido à necessidade de solucionar problemas de comunicação entre duas máquinas diferentes, eu tinha duas chaves privadas no ~/.sshlado do cliente.

Em vez de configurar cada host do servidor com a respectiva chave privada, ~/.ssh/identitycomo eu deveria ter feito, eu tinha a chave secundária (e, neste caso, incorreta) configurada para todos os hosts:

Host *
IdentityFile ~/.ssh/identity_b

A correção ~/.ssh/identityresolveu o problema:

Host a
IdentityFile ~/.ssh/identity_a
Host b
IdentityFile ~/.ssh/identity_b

0

Eu apenas tive o mesmo problema, mas alterar as permissões com chmodnão estava ajudando, pois acabou que eu não tinha a propriedade do ~/.ssh/authorized_keysarquivo. Você pode alterar a propriedade do .sshdiretório com:

sudo chown -R "$USER" ~/.ssh

-1

De alguma forma, isso funcionou para mim:

root @ kaiser: ~ # vim / etc / ssh / sshd_config

Alterar essa linha de sim para não 28 StrictModes no

Tente novamente

sysadmin @ suselinux1: ~> com sysadmin kaiser Bem-vindo ao Ubuntu 12.04.1 LTS (i686 genérico do GNU / Linux 3.2.0-25)

Último login: Sex Nov 9 15:40:11 2012 from 10.1.3.25 sysadmin @ kaiser: ~ $ date vie nov 9 17:53:11 CST 2012 sysadmin @ kaiser: ~ $


3
Fazer algo sem saber o que faz e por que funciona pode ser aceitável, mas sugerir o mesmo é ruim e, para ser justo, pior se tratar de um sistema de segurança.
Mahesh

2
acordado. que seja um incentivo para criar sshddocumentos melhores , que não se enquadram exatamente na categoria "boa leitura de sábado"
code_monk
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.