Como altero minha senha da chave privada?

284

Eu tenho um par de chaves pública / privada existente. A chave privada é protegida por senha e a criptografia pode ser RSA ou DSA. Essas chaves são do tipo que você gera ssh-keygene geralmente armazena ~/.ssh.

Gostaria de alterar a senha da chave privada. Como eu faço isso em um shell Unix padrão?

Além disso, como faço para simplesmente remover a senha? Apenas mude para vazio?

kch
fonte

Respostas:

372

Para alterar a senha na sua chave DSA padrão:

$ ssh-keygen -p -f ~/.ssh/id_dsa

em seguida, forneça sua senha antiga e nova (duas vezes) nos avisos. (Use ~/.ssh/id_rsase você tiver uma chave RSA.)

Mais detalhes em man ssh-keygen:

[...]
SYNOPSIS
    ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C comment]
               [-f output_keyfile]
    ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
[...]
     -f filename
             Specifies the filename of the key file.
[...]
     -N new_passphrase
             Provides the new passphrase.

     -P passphrase
             Provides the (old) passphrase.

     -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.
[...]
Mike Mazur
fonte
1
Isto é da página de manual que acompanha o net-misc / openssh-5.2_p1-r2 no Gentoo Linux.
Mike Mazur
12
Além disso, para o bem da futura pessoa preguiçosa, eu reverteria a ordem: atendedor rápido primeiro, página de manual depois.
kch
2
Eu acho que a resposta é ótima, pois mostra onde você pode alterar a senha e onde procurar a resposta. Ajudei muitas pessoas a configurar chaves ssh e, para elas, lembrar de qual ferramenta eles usaram nem sempre é fácil. Além disso, buscando a resposta sobre a 'net é a primeira opção para muitos ...
sastorsl
5
Se suas máquinas usam OpenSSH> = 6.5, você deve usar a -oopção para ativar o novo formato de chave privada (bcrypt como KDF por padrão). Nas versões mais antigas do OpenSSH, use o PKCS # 8 para obter arquivos de chave privada mais seguros .
Quinn Comendant
2
@FranciscoLuz o comando na minha resposta é específico para uma chave DSA. Se você possui uma chave RSA, seu comando está correto. Eu adicionei uma sinopse à resposta para resolver isso.
Mike Mazur
-9

Remova suas chaves públicas / privadas SSH:

rm ~/.ssh/id_rsa*

Recrie o par de chaves, escolhendo uma nova senha:

ssh-keygen -t rsa -f ~/.ssh/id_rsa

Adicione a chave privada recém-criada ao seu OS X Keychain para armazenar a frase secreta e gerenciar o desbloqueio automaticamente:

ssh-add -K ~/.ssh/id_rsa

Copie a chave pública na área de transferência do OS X para adicionar serviços da Web como o GitHub, etc.

cat ~/.ssh/id_rsa.pub | pbcopy

Adicione sua chave pública recém-criada ao ~/.ssh/authorized_keysarquivo do servidor remoto. Certifique-se de garantir as permissões corretas da ~/.sshpasta remota (700) e ~/.ssh/authorized_keys(600). Você pode investigar o uso ssh-copy-idpara facilitar esse processo.

gauta
fonte
3
O pôster perguntou como alterar a senha da chave, não jogá-la fora e gerar uma nova; e eles nunca mencionou OS X.
musicinmybrain
2
Eu teria votado positivamente nesta resposta se não fosse por esses três problemas: 1. Excluir as chaves antigas não é um bom começo, pois você precisará delas durante a atualização authorized_keys. 2. Você não mencionou por que criar novas chaves é melhor do que alterar senhas nas antigas. 3. Você faz suposições sobre o SO, o que não é suportado pela pergunta.
kasperd