chave pública sempre solicitando senha e frase-chave

19

Estou tentando fazer o SSH de um NAS para um servidor da web usando uma chave pública. O usuário do NAS é 'root' e o usuário do servidor da web é 'backup'

Eu tenho todas as permissões definidas corretamente e quando depuro a conexão SSH, recebo: (último pouco da depuração)

debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /root/.ssh/id_dsa.pub
debug1: Server accepts key: pkalg ssh-dss blen 433
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase for key '/root/.ssh/id_dsa.pub':

Eu estou usando o comando:

ssh -v -i /root/.ssh/id_dsa.pub [email protected]

O fato de estar solicitando uma senha é um bom sinal, com certeza, mas não quero que ela solicite essa ou uma senha (que aparece depois se eu pressionar 'retornar' na senha)

Andrew Atkinson
fonte

Respostas:

24

Isso porque sua chave privada está criptografada ...

Você pode adicionar sua chave a um agente ssh usando ssh-addou remover a senha (e com ela a criptografia) da chave usando o seguinte comando:

ssh-keygen -p -f /root/.ssh/id_dsa -N ''


EDITAR

Ah, acabei de perceber que você tenta usar sua chave pública para autenticar ... Você deseja usar a chave privada lá:

ssh -v -i /root/.ssh/id_dsa [email protected]

E apenas para ter certeza absoluta, o conteúdo do arquivo id_dsa.pubentra ~backup/.ssh/authorized_keysno servidor da web. Você pode usar o seguinte comando para fazer isso automaticamente

ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
andrekeller
fonte
ainda entendi o problema. Funcionou e me concedeu "sua identificação foi salva com a nova senha". mas ainda solicitará uma senha na próxima vez que tentar fazer login. Eu não tenho certeza o que mais tentar ...
Andrew Atkinson
veja a minha resposta atualizado ... talvez isso ajude ...
andrekeller
obrigado, parece que eu estava, possivelmente, tentar comparar a chave pública para a chave pública ... Eu não tinha necessidade de remover a senha
Andrew Atkinson
O fato de eu estar usando meu pub para autenticar (um erro estúpido) foi o problema. Obrigado!
Qix
6

Isso aconteceu comigo quando a chave privada que eu tinha não estava no formato OpenSSH.

Originalmente, eu gerava minha chave no Windows usando o PuttyGen e estava sendo devolvido com a mesma coisa.

Consegui corrigi-lo carregando a chave no PuttyGen e clicando em "Conversões" para obtê-lo no formato OpenSSH.

Locane
fonte
2

Existem algumas coisas.

Principalmente, se a KEY estiver solicitando uma senha, a chave foi gerada com ela. Em segundo lugar, se o sistema solicitar uma senha depois, a chave não será autenticada. Ou seja, você precisará regenerar sua chave SSH (ou alterá-la como sugerido por @rbtux) e corrigir os arquivos allowed_keys.

ssh-keygen -t {dsa | rsa} -b {1024 | 2048 | 4096} -C "comentário opcional" -f id_examplekey

Os itens entre colchetes são opções, tipo e tamanho do bit (para indicar o óbvio: dsa> rsa, 4096> 1024 - em termos de "segurança").

Em seguida, você precisa adicionar a chave pública (.pub) aos arquivos authorized_keyse authorized_keys2(é um equívoco comum dizer que o .pub é para uso local, no entanto, deve ser comparado com isso) .ssh. Na pasta do servidor .

$ cat id_examplekey.pub >> chaves_ autorizadas {, 2}

Então, do seu lado, você deve certificar-se de que as permissões de chave são chmod 600 id_examplee, para aliviar a digitação de tudo isso, você pode configurar o arquivo de configuração: ~/.ssh/configna sua caixa local (que é um esqueleto, você pode personalizar isso uma tonelada):

Host example.com
    User WHATEVERNAME
    IdentityFile ~/.ssh/id_examplekey
nerdwaller
fonte
mas a seção na depuração que lê: debug1: Server aceita key: pkalg ssh-dss blen 433 isso não significa que a chave foi aceita? Eu recriei novamente sem senha, ainda é o mesmo? Estou sem ideias? Obrigado
Andrew Atkinson
@AndrewAtkinson Parece que você conseguiu abaixo. Você precisa da chave privada na máquina from (local, cliente, o que for) e a chave public.pub adicionada aos arquivos allowed_keys. Minhas outras sugestões devem ajudar a economizar seu tempo: D Boa sorte!
Nerdwaller
Você escreve "Principalmente, se a chave está pedindo uma senha, a chave foi gerada com ele." <- sim, embora eu só testado o que o entrevistador fez, assim, fazendo -i com a chave pública $ ssh user@comp -i ~/.ssh/id_rsa.pube ele disse permissões erradas e privado chave será ignorada .. então mudei as permissões para 600 como id_rsa, e pedi uma senha. Então, na verdade, ele irá pedir uma senha se você especificar a chave pública, embora tanto a chave pública e chave privada não foram gerados com uma senha
barlop
2

Para mim, como a chave em si foi criptografada, segui as seguintes etapas:

  • Inicie o ssh-agent: $ ssh-agent bash
  • Adicione a chave de identidade padrão ao gerenciador de chaves: $ ssh-add
  • Se você deseja adicionar uma chave diferente, então: $ ssh-add /location/of/key

Para inspecionar a qualquer momento, a lista de chaves carregadas no momento:

$ ssh-add -l

Mais detalhes podem ser obtidos neste link

Sibi
fonte
1

tente https://wiki.gentoo.org/wiki/Keychain

É uma espécie de embrulho ssh-agentessh-add

Prós: Não é necessário inserir a senha repetidamente, desde que você não reinicie. Pode ser usado em crontab.

Pode ser ajuda.

Gon
fonte
1

Pode ser porque você está usando uma DSkey pubkey que está desativada por padrão no OpenSSH v7.

Se você não puder alterar o par de chaves, uma possível solução alternativa será solicitar ao seu daemon SSH em webserver.com que aceite esses tipos de chave, atualizando /etc/ssh/sshd_configou equivalente, adicionando a seguinte linha

PubkeyAcceptedKeyTypes=+ssh-dss

E, em seguida, reiniciando o serviço

/etc/init.d/ssh restart                     # or equivalent
mosh442
fonte
0

No Mac OSX, você pode adicionar sua chave privada ao chaveiro usando o comando:

ssh-add -K /path/to/private_key

Se sua chave privada estiver armazenada em ~ / .ssh e tiver o nome id_rsa:

ssh-add -K ~/.ssh/id_rsa

Você será solicitado a fornecer sua senha, que será armazenada em seu chaveiro.

Groot
fonte
O que preciso fazer no cliente Linux se o cliente Mac funcionar?
precisa saber é o seguinte