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)?
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.
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.
Bad passphrase
umaid_ed25519
chave, mas a senha estiver correta, provavelmente está usando um nível inferiorssh-keygen
para gerenciá-la.Respostas:
Experimente o comando
ssh-keygen -p -f keyfile
Na página do manual ssh-keygen
Exemplo:
fonte
$ 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.Proc-Type: 4,ENCRYPTED
cabeç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.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:
A senha necessária será a nova senha. (Isso pressupõe que você adicionou a chave pública
~/.ssh/id_rsa.pub
aos seus arquivos allowed_keys.) Teste com ssh:Você pode ter várias chaves com nomes diferentes para diferentes usos.
fonte
ssh-add -D
para remover sua identidade em cache. Em seguida, tente conectar-se novamente e ele solicitará sua senha. Usessh-add -l
para ver uma lista de suas identidades em cache.Você também pode usar
openssl
:consulte: https://security.stackexchange.com/a/59164/194668
fonte