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

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

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

Em seguida, comecei a tentar fazer com que ele usasse a autenticação de chave pública/privada. Eu fiz o seguinte:

  1. Gerou as chaves usando PuttyGen.
  2. Moveu a chave pública para /etc/ssh/myusername/authorized_keys (Estou usando diretórios pessoais criptografados).
  3. Configurar sshd_config comer:

    PubkeyAuthentication yesAuthorizedKeysFile /etc/ssh/%u/authorized_keysStrictModes noPasswordAuthentication noUsePAM yes

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

Se eu correr 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-1023Checking blacklist file /etc/ssh/blacklist.RSA-1023temporarily_use_uid: 1000/1000 (e=0/0)trying public key file /etc/ssh/username/authorized_keysfd4 clearing O_NONBLOCKrestore_uid: 0/0Failed publickey for username from 192.168.1.7 port 14343 ssh2Received disconnect from 192.168.1.7: 14: No supported authentication methods available [preauth]do_cleanup [preauth]monitor_read_log: child log fd closeddo_cleanupPAM: cleanup

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

Problema resolvido:

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

---- BEGIN SSH2 PUBLIC KEY ----Comment: "rsa-key-20121022"AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8=---- END SSH2 PUBLIC KEY ----

No entanto, isso não funcionará, então o que você precisa fazer é abrir a chave no PuttyGen e copiá-la de lá (isso resulta na chave no formato correto e em 1 linha):

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

Cole isso em authorized_keys então deve funcionar.

  1. Editar o /etc/ssh/sshd_config arquivo.
  2. Alterar PasswordAuthentication e ChallengeResponseAuthentication para yes.

3A. reiniciar ssh /etc/init.d/ssh restart.
OU
3b. melhor você usar service sshd restart

Apenas uma dica que espero possa ajudar 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 torna o arquivo authorized_keys inválido.

O que descobri ser o menos provável de quebrar é ecoar a string completa e redirecionar a saída para o arquivo. Clicando com o botão direito do mouse 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 desse método é que você pode adicionar várias chaves dessa maneira usando to append em vez de to overwrite, por exemplo:

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

Espero que ajude alguém.

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--... Foi-rw-rw-r--

ssh é muito mimado sobre perms de arquivo.

RESOLVER:

  1. Você precisa baixar o puttyGEN e gerar uma chave pública e uma privada.
  2. Atribuí uma senha à minha chave privada.
  3. >>>em seguida, configure a chave privada no putty. Putty-SSH-Auth-navegue até o seu privado.
  4. Certifique-se de ter o mesmo caminho para chave privada e pública.
  5. Você precisa configurar a chave pública no servidor. (No meu caso, conversei 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) a conexão.

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

No meu caso, tenho duas instâncias da AWS. Um deles está funcionando perfeitamente, o outro está funcionando ao se conectar por meio do Intellij Idea, mas não do Putty, mas estava funcionando no início. Então, no meu caso, deve ser algo sobre putty