Como adiciono uma senha a uma chave privada do OpenSSH que foi gerada sem uma senha?


213

Eu gerei uma chave privada OpenSSH usando puttygen (e a exportei no formato OpenSSH). Como posso colocar uma senha nessa chave existente (sei como gerar uma nova chave com uma senha)?


13
Se você vir esse comentário, marque uma das respostas como aceita ou escreva um comentário dizendo o que eles perderam. Obrigado!
Benjamin Atkin

1
Adicionar é o mesmo que alterar ou remover: stackoverflow.com/questions/112396/… , possível o mesmo para alteração: serverfault.com/questions/50775/…
Ciro Santilli 2 冠状 病

Se você digitar Bad passphraseuma id_ed25519chave, mas a senha estiver correta, provavelmente está usando um nível inferior ssh-keygenpara gerenciá-la.
JWW

Respostas:


350

Experimente o comando ssh-keygen -p -f keyfile

Na página do manual ssh-keygen

 -p      Requests changing the passphrase of a private key file instead of
         creating a new private key.  The program will prompt for the file
         containing the private key, for the old passphrase, and twice for
         the new passphrase.

 -f filename
         Specifies the filename of the key file.

Exemplo:

ssh-keygen -p -f ~/.ssh/id_rsa

5
Para quem deseja saber o que é -f: especifica o arquivo de entrada.
Neikos

4
//, @sigjuice, você poderia postar um exemplo, como $ ssh-keygen -p -f /Users/sigjuice/.ssh/id_rsa? Isso pode ajudar as pessoas que não sabem diferenciar entre uma chave pública e uma chave privada e ajudá-las a molhar os pés mais rapidamente.
Nathan Basanese

Por alguma razão, no MacOS 10.14, isso não formata o arquivo com o Proc-Type: 4,ENCRYPTEDcabeçalho, o que é incompatível com alguns aplicativos que procuram uma senha. Depois de tentar várias maneiras de fazê-lo funcionar, a maneira mais fácil de solucionar isso era fazer a mesma coisa dentro de um contêiner do Docker executando o Ubuntu e depois copiar a chave de volta para o meu Mac.
Ryanbrainard

38

Use a opção -p para ssh-keygen. Isso permite alterar a senha em vez de gerar uma nova chave.

Mude a senha como mostra o sigjuice:

ssh-keygen -p -f ~/.ssh/id_rsa

A senha necessária será a nova senha. (Isso pressupõe que você adicionou a chave pública ~/.ssh/id_rsa.pubaos seus arquivos allowed_keys.) Teste com ssh:

ssh -i ~/.ssh/id_rsa localhost

Você pode ter várias chaves com nomes diferentes para diferentes usos.


//, Você poderia mostrar um exemplo e como verificar se a opção funcionou, @ BillThor?
Nathan Basanese

Eu não entendi. A senha está definida, vejo quando tento alterá-la novamente. Mas quando tento fazer login no servidor remoto, ele não solicita a senha da senha, por quê?
Luka

1
Está bem. Ele pede uma vez por sessão :) Não sabia disso.
Luka

Isso significa que você precisa sair e entrar novamente? Fechar a janela do terminal e reabri-la não funciona para mim.
Simon H

Você pode digitar ssh-add -Dpara remover sua identidade em cache. Em seguida, tente conectar-se novamente e ele solicitará sua senha. Use ssh-add -lpara ver uma lista de suas identidades em cache.
Scott Nedderman 26/03/19

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.