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

63

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

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

Eu então comecei a tentar usar a autenticação de chave pública / privada. Eu fiz o seguinte:

  1. Gerou as chaves usando o PuttyGen.
  2. Movido a chave pública para /etc/ssh/myusername/authorized_keys (estou usando diretórios pessoais criptografados).
  3. Configure sshd_config da seguinte forma:

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

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

Se eu executar sshd no 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?

    
por F21 22.10.2012 / 03:10

6 respostas

59

Problema resolvido:

Parece que houve um problema com meu arquivo de chave pública. O PuttyGen criará um arquivo de chave pública que se pareça 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á, então o que você precisa fazer é abrir a chave em PuttyGen e copiá-la de lá (isso faz com que a chave esteja no formato correto e em uma linha):

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

Cole isso em authorized_keys , então deve funcionar.

    
por F21 22.10.2012 / 03:47
9

Apenas uma dica, espero que possa ajudar alguém com as dores de cabeça que eu tive. A F21 tem razão ao precisar copiar a chave da janela do PuTTYGen em vez de salvar o arquivo, mas depois da cópia, a maneira como você cola pode ter um impacto significativo sobre se a sua chave funcionará ou não. Alguns editores alteram o texto enquanto você cola ou faz algo com novas linhas ou algo que invalida o arquivo authorized_keys.

O que eu descobri ser o menos provável de quebrar é fazer o eco da string inteira e redirecionar a saída para o arquivo. Clicando com o botão direito no PuTTY para colar a string da chave na linha de comando, funciona assim (com o exemplo dado 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 deste método é que você pode adicionar várias chaves dessa maneira usando > > para anexar em vez de > para sobrescrever, por exemplo:

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

Espero que ajude alguém.

    
por Dave 27.02.2013 / 02:04
7

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

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

O ssh é muito exigente quanto a perms de arquivos.

    
por Sharad 13.03.2015 / 19:50
6
  1. Edite o arquivo /etc/ssh/sshd_config .
  2. Altere PasswordAuthentication e ChallengeResponseAuthentication para yes .

3a. Reinicie ssh /etc/init.d/ssh restart .
   OR
3b. melhor você usar service sshd restart

    
por Hunter 19.08.2015 / 14:35
5

No meu caso, o motivo era que o arquivo de chave privada (.ppk) havia sido removido no agente de autenticação Putty, ou seja, Pageant. Acabei de atualizá-lo novamente para o Pageant e a conexão funcionou perfeitamente depois disso.

    
por Marko H 17.01.2014 / 18:58
3

RESOLVIDO:

  1. Você precisa fazer o download do puttyGEN e gerar uma chave pública e privada.
  2. Eu atribuí uma senha à minha chave privada.
  3. configure a chave privada no putty. Putty- > SSH- > Auth- > Navegue para o seu privado.
  4. Verifique se você tem o mesmo caminho para a chave privada e pública.
  5. Você precisa configurar a chave pública no servidor. (No meu caso eu falei com o cara do servidor e perguntei se ele poderia adicionar minha chave pública ao servidor). Você precisa da chave pública no outro lado (servidor) da conexão.
por Matt.sinner 17.04.2013 / 11:38

Tags