Chave pública SSH - Não há métodos de autenticação suportados disponíveis (chave pública enviada pelo servidor)


80

Eu tenho uma configuração de servidor 12.10 em uma máquina virtual com sua rede configurada para ponte (essencialmente será vista como um computador conectado ao meu comutador).

Instalei o opensshd via apt-gete consegui me conectar ao servidor usando o putty com meu nome de usuário e senha.

Comecei a tentar fazê-lo usar a autenticação de chave pública / privada. Eu fiz o seguinte:

  1. Gerou as chaves usando PuttyGen.
  2. Movida a chave pública para /etc/ssh/myusername/authorized_keys(estou usando diretórios pessoais criptografados).
  3. Configure sshd_configassim:

    PubkeyAuthentication yes
    AuthorizedKeysFile /etc/ssh/%u/authorized_keys
    StrictModes no
    PasswordAuthentication no
    UsePAM yes
    

Quando eu me conecto usando o putty ou o WinSCP, recebo um erro dizendo Não há métodos de autenticação suportados disponíveis (chave pública do servidor enviada).

Se eu executar sshdno modo de depuração, vejo:

PAM: initializing for "username"
PAM: setting PAM_RHOST to "192.168.1.7"
PAM: setting PAM_TTY to "ssh"
userauth-request for user username service ssh-connection method publickey [preauth]
attempt 1 failures 0 [preauth]
test whether pkalg/pkblob are acceptable [preauth[
Checking blacklist file /usr/share/ssh/blacklist.RSA-1023
Checking blacklist file /etc/ssh/blacklist.RSA-1023
temporarily_use_uid: 1000/1000 (e=0/0)
trying public key file /etc/ssh/username/authorized_keys
fd4 clearing O_NONBLOCK
restore_uid: 0/0
Failed publickey for username from 192.168.1.7 port 14343 ssh2
Received disconnect from 192.168.1.7: 14: No supported authentication methods available [preauth]
do_cleanup [preauth]
monitor_read_log: child log fd closed
do_cleanup
PAM: cleanup

Por que isso está acontecendo e como posso corrigir isso?


No meu caso, tenho duas instâncias da AWS. Um deles está funcionando perfeitamente, o outro está trabalhando ao se conectar através do Intellij Idea, mas não de Putty, mas estava funcionando no início. Portanto, no meu caso, deve ser algo sobre massa de vidraceiro
Marian Klühspies 23/11/2015

Respostas:


70

Problema resolvido:

Parece que houve um problema com meu arquivo de chave pública. PuttyGen criará um arquivo de chave pública que se parece com:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20121022"
AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwu
a6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOH
tr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/u
vObrJe8=
---- END SSH2 PUBLIC KEY ----

No entanto, isso não funcionará, portanto, o que você precisa fazer é abrir a chave no PuttyGen e copiá-la a partir daí (isso faz com que a chave esteja no formato correto e em 1 linha):

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022

Cole isso e, em authorized_keysseguida, ele deve funcionar.


1
Abri authorized_keysno vi e removi todas as quebras de linha e funcionou.
22716 Luke

1
onde está localizado o arquivo de chave pública? Eu estou apenas usando massa de vidraceiro.
Syler

1
Eu fiz todas as coisas acima, mas ainda assim o servidor está enviando Nenhum método de autenticação com suporte disponível (servidor enviou chave pública)
Al-Alamin

Como você sabia que isso não funcionaria / onde encontrou o formato esperado?
Michael

Onde eu preciso colar exatamente quando você diz "Cole isto em allowed_keys, então ele deve funcionar". @ F21
Mahender Reddy Yasa 24/09

20
  1. Edite o /etc/ssh/sshd_configarquivo.
  2. Mude PasswordAuthenticatione ChallengeResponseAuthenticationpara yes.

3a. Reinicie o ssh /etc/init.d/ssh restart.
OU
3b. melhor você usarservice sshd restart


Na verdade, este é o comentário útil se você tiver problemas para se conectar softwares vie ftp
CNU

Isso funciona para mim!
Asinox

8
Todo o objetivo de se autenticar via arquivo-chave é evitar a autenticação de senha; portanto, você deve definir PasswordAuthenticationcomo no.
Pere

É a única resposta que me ajudou. Eu não precisava de autenticação de chave pública / privada, mas estava recebendo essa mensagem estranha.
Serge Rogatch 27/06

Obrigado ChallengeResponseAuthentication, ele resolveu o problema para mim no Debian 10.0
realtebo 12/07

10

Espero que apenas uma dica ajude alguém com as dores de cabeça que tive. F21 está certo de que você precisa copiar a chave da janela PuTTYGen em vez de salvar o arquivo, mas após a cópia, a maneira como você cola pode ter um impacto significativo sobre se sua chave funcionará ou não. Alguns editores alteram o texto à medida que você cola, ou fazem algo com novas linhas ou algo que invalida o arquivo allowed_keys.

O que eu achei menos provável de quebrar é repetir a string completa e redirecionar a saída para o arquivo. Clicar com o botão direito do mouse em PuTTY para colar a cadeia de teclas na linha de comando, funciona da seguinte maneira (com o exemplo fornecido acima):

echo [right-click-to-paste-here] > /etc/ssh/username/authorized_keys

Você vai acabar com isso:

echo ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022 > /etc/ssh/username/authorized_keys

Outra vantagem desse método é que você pode adicionar várias chaves dessa maneira usando >> para acrescentar em vez de> para substituir, por exemplo:

echo ssh-rsa AAAAB3<...snip...>rJe8= rsa-key-20121022 >> /etc/ssh/username

Espero que ajude alguém.


Este não trabalho para 4096 chaves de bits ... ele excede o limite de terminal para personagens que eu acho
Freedo

1
Pode ou não ser uma boa ideia remover isso do seu histórico do bash posteriormente.
Jason Powers Murray

@ JasonPowersMurray: é uma chave pública. O sistema de criptografia de chave pública foi projetado para permanecer seguro quando a chave é publicada, portanto, não há problema em registrar chaves públicas no histórico do bash e em outros lugares.
David Cary

9

Já estávamos usando o tipo certo de chave (ppk em vez de pem) ..

No nosso caso, houve um problema com as permissões de arquivo para o author_keys na pasta do usuário do servidor. Tem que ser -rw-r - r-- ... Era -rw-rw-r--

O ssh é muito exigente quanto às permissões de arquivo.


Obrigado por me indicar a direção certa. No nosso caso, o proprietário e as permissões estavam erradas.
Zsolti 06/10

como alterar as permissões de arquivo, pois não podemos acessar através do ssh? alguma outra maneira de fazer isso?
jit

1
O meu também era um problema de propriedade, grupo e permissões. Como mostrado aqui ( stackoverflow.com/a/36808935/384670 ), as permissões que eu tive que usar eram 600 para o arquivo e 700 para o diretório. Também alterei o proprietário e o grupo para esse usuário não raiz em questão.
M Katz

5

RESOLVIDO:

  1. Você precisa fazer o download do puttyGEN e gerar uma chave pública e uma chave privada.
  2. Eu atribuí uma senha à minha chave privada.
  3. em seguida, configure a chave privada na massa. Putty-> SSH-> Auth-> Navegue até o seu privado.
  4. Verifique se você tem o mesmo caminho para a chave pública e privada.
  5. Você precisa configurar a chave pública no servidor. (No meu caso, conversei com o servidor e perguntei se ele poderia adicionar minha chave pública ao servidor). Você precisa da chave pública do outro lado (servidor) da conexão.

2
"Garanta que você tenha o mesmo caminho para chave pública e privada." Isso não tem nada a ver com isso. Você não precisa residir na sua chave pública ao lado da sua privada ..
user3790897

5

No meu caso, o motivo foi que o arquivo de chave privada (.ppk) foi removido no agente de autenticação Putty, ou seja, Pageant. Acabei de atualizar novamente para o concurso lá e a conexão funcionou perfeitamente depois disso.

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.