Chave SSH me pedindo uma senha?

35

Eu tenho um par de chaves pública / privada. Nenhum deles tem nenhum tipo de senha associada a eles.

Sempre que tento ssh usando o privado ou o público (e tenho certeza de que só devo usar a chave pública), sou consultado por uma senha e, é claro, não consigo me conectar.

Alguém tem alguma idéia de como contornar isso? Estou digitando algum comando incorretamente? Estou tentando ssh em um servidor que eu configurei no meu arquivo ~ / .ssh / config (corretamente, pois essa mesma configuração funciona em outro servidor) com a chave armazenada em ~ / .ec2 / key.ppk

Também tentei usar o puttygen.exe para gerar uma nova chave privada com uma senha e, em seguida, usar essa chave; quando digito a senha, ela ainda falha.

llaskin
fonte

Respostas:

28

Primeiro, é a chave privada que terá a frase secreta. Isso valida contra a chave pública armazenada no servidor remoto.

O melhor palpite é que você está tentando usar um ppkformato de chave putty private key ( ) com o openssh, isso não funciona ... O PuTTYgen possui uma opção de exportação para o openssh, se esse for o caso.

ssh-rsa AAAAB3NzaC1y...... etc

Também suponho que o servidor para o qual você está tentando ssh tenha sua chave pública armazenada corretamente no arquivo de chave autorizado (em ~/.ssh/authorized_keysgeral).

Outro palpite seria que a chave correta não esteja selecionada. Algumas coisas que eu tentaria são:

Redefinindo a frase secreta das teclas usando ssh-keygen, desta forma ...

$ ssh-keygen -f ~/.ec2/key.ppk -p

Isso confirmará se, de fato, sua chave (ou não) já possui uma frase secreta.

Em segundo lugar, eu tentaria conectar usando uma saída detalhada, especificando sua chave pública explicitamente:

$ ssh host -i ~/.ec2/key.ppk -vvv

Isso lhe dará uma idéia do que está acontecendo.

mrverrall
fonte
Correto, essa é uma chave gerada pelo puttygen a partir de uma chave que funciona no putty. Quando coloco massa no mesmo servidor (da máquina que hospeda a instância do cygwin), ele funciona bem com a mesma chave exata. Quando tento conectar via ssh do cygwin, ele bombeia. Estou confuso sobre como fazer isso funcionar.
llaskin
6
Acho que os pontos de mrverrall são que o formato do arquivo da chave privada PuTTY não é o mesmo que o formato usado para o OpenSSH (o cliente ssh no cygwin). Portanto, o OpenSSH está apenas falhando em usar os dados da chave privada porque não consegue descobrir o que os dados significam. Mas o PuTTY possui uma opção de "exportação", para que você possa obter dados no formato "PEM" necessário.
Phil P
Este erro também é fornecido se o arquivo estiver no formato correto - verifique duas vezes e três vezes se você copiou e colou corretamente se o criou manualmente.
Daniel Sokolowski
É ssh-rsa AAAAB3NzaC1y...... etco formato do openssh, certo? Eu tenho esse formato na minha chave privada. O cabeçalho declara: PuTTY-User-Key-File-2: ssh-rsa Encryption: none Comment: imported-openssh-key Public-Lines: 6Mas o arquivo é armazenado como um arquivo id_rsa. Isso significa que ele ainda está no formato .ppk, mesmo que o nome do arquivo seja justoid_rsa
Alpha_989 15/01/18
Encontrei a resposta para os diferentes formatos aqui. No meu caso, apesar de a extensão do arquivo não ter .ppk, ele ainda estava no formato de massa, o que me confundiu, pois mostrava todos os tipos de erros, mas não deu nenhuma dica direta de que o problema estava no formato da chave : stackoverflow.com/a/44391850/4752883
alpha_989 15/01
18

Você pode executar o ssh-agent. Veja aqui para uma discussão.

A versão curta que funcionou para mim (no bash):

$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-rnRLi11880/agent.11880; export SSH_AUTH_SOCK;
SSH_AGENT_PID=11881; export SSH_AGENT_PID;
echo Agent pid 11881;

Peguei as 3 linhas que ecoam e as executei. Outra maneira de fazer isso é obter a saída de -s:

$ eval `ssh-agent -s`

Em seguida, adicionei minhas credenciais:

$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/me/.ssh/id_rsa: 
Identity added: /home/me/.ssh/id_rsa (/home/me/.ssh/id_rsa)

Agora, o agente fornece as credenciais, em vez de eu ter que digitar minha senha.

Eu acredito que o ssh-agent desaparece quando o shell desaparece, portanto, isso deve ser script na inicialização, para maior comodidade. O link que compartilhei descreve também os scripts.

dfrankow
fonte
4

Quando você configura sua chave pública, provavelmente (talvez sem querer) a configura com uma senha.

Você provavelmente precisa começar do zero - eu não usei o puttygen, mas você pode excluir (ou renomear) a chave pública em seu diretório .ssh, usar ssh-keygenpara gerar uma nova (certificando-se de não fornecer uma senha) e, em seguida, compartilhe a public_key no arquivo allowed_keys no servidor ao qual você está tentando se conectar.

Você também pode precisar remover sua chave de senha antiga do arquivo de chaves autorizadas no servidor ao qual está se conectando.

JohnMcG
fonte
4

Verifique se a chave privada id_rsanão possui quebras de linha extras no final; em alguns casos, quebras de linha extras farão com que o ssh-keygen solicite a senha, tente o seguinte:

sed  '/^$/d' /path/to/key > id_rsa

teste:

ssh-keygen -yf id_rsa
nbari
fonte
2
OMG, este foi o meu problema. uma nova linha extra após a -----END RSA PRIVATE KEY-----solicitação da senha em uma chave que não tinha um conjunto!
edk750 29/01
3

Uma coisa a verificar, se seu arquivo sshd_config tiver StrictModes = yes, o diretório $ HOME ou o diretório $ HOME / .ssh não deve ser gravável mundialmente em grupo ou outro. Caso contrário, a autenticação falhará, não importa o quê.

TD1
fonte
1

Cometi o erro de substituir acidentalmente meu arquivo ~ / .ssh / id_rsa pelo meu ~ / .ssh / id_rsa.pub. Isso fará com que o ssh peça uma frase secreta.

Grilo vermelho
fonte
0

Encontrei esse problema no outro dia. Especificamente, eu estava tentando copiar / colar uma chave privada da AWS de uma máquina para outra.

Eu tenho o mau hábito de perder o primeiro ou o último personagem. Acontece que, se você não pegar todos os hífens no final da sua chave privada, mesmo que isso não tenha nada a ver com o texto da chave, será solicitada uma senha para a chave privada até adicionar todos os caracteres do chave da qual você copiou (no meu caso, isso significava adicionar um único hífen ao final da chave).

Suponho que isso significa que a melhor prática é fazer o SSH do arquivo de texto através da conexão, em vez de tentar copiar e colar entre as janelas do Terminal.

Professor Tom
fonte
0

No OSX eu era capaz de executar:

$ ssh-add ~/.ssh/id_rsa Enter passphrase for /Users/me/.ssh/id_rsa: `Identity added: /Users/mikekilmer/.ssh/id_rsa (/Users/mikekilmer/.ssh/id_rsa)

A senha foi armazenada pelo aplicativo Keychain Access, que está na pasta Aplicativos> Utilitários. Acabei de entrar id_no campo de pesquisa.

MikeiLL
fonte
0

Tente visualizar os arquivos de log no servidor. Veja / var / log / auth log (por exemplo, / var / log / authlog para o OpenSSH, embora eu já tenha visto alguns sistemas operacionais usarem o Portable OpenSSH e /var/log/auth.log) e verifique o final desse arquivo.

As causas mais comuns que eu vi são permissões incorretas (conforme observado pela resposta do TD1 ), embora outros problemas possam estar com a chave pública (armazenada no servidor) não estar no arquivo correto, ou com a chave sendo comentada ou um nome de usuário com erro de ortografia.

Também pode ser útil (para solução de problemas) fornecer uma senha temporariamente à conta, apenas para verificar se a conta pode ser bem-sucedida quando você faz isso.

Se a visualização do arquivo de log não levar rapidamente a uma resolução, sugiro postar uma nova pergunta (já que essa é uma ótima pergunta generalizada) que inclui os detalhes específicos do arquivo de log, para que instruções mais específicas possam ser fornecidas.

TOOGAM
fonte
0

Na minha equipe, quando isso acontece, não há problema com nada localmente. A chave ssh do usuário e / ou o acesso não foram configurados corretamente no servidor ao qual estão se conectando (no nosso caso, uma plataforma de hospedagem). Por alguma razão, isso aciona um prompt para uma chave ssh inexistente.

ognockocaten
fonte