Comment ajouter un mot de passe à une clé privée OpenSSH qui a été générée sans mot de passe?

213

J'ai généré une clé privée OpenSSH à l'aide de puttygen (et je l'ai exportée au format OpenSSH). Comment puis-je mettre un mot de passe sur cette clé existante (je sais comment générer une nouvelle clé avec un mot de passe)?

Conrad
la source
13
Si vous voyez ce commentaire, veuillez marquer une des réponses comme acceptée ou écrire un commentaire disant ce qu'ils ont manqué. Merci!
Benjamin Atkin,
1
Ajouter est identique à changer ou supprimer: stackoverflow.com/questions/112396/… , possible même pour changer: serverfault.com/questions/50775/…
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
Si vous obtenez Bad passphraseune id_ed25519clé mais que le mot de passe est correct, vous utilisez probablement un niveau inférieur ssh-keygenpour le gérer.
2015

Réponses:

350

Essayez la commande ssh-keygen -p -f keyfile

Depuis la page de manuel de 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.

Exemple:

ssh-keygen -p -f ~/.ssh/id_rsa
sigjuice
la source
5
Pour ceux qui veulent savoir ce qu'est -f: il spécifie le fichier d'entrée.
Neikos
4
//, @sigjuice, voulez-vous s'il vous plaît poster un exemple, comme $ ssh-keygen -p -f /Users/sigjuice/.ssh/id_rsa? Cela pourrait aider les personnes qui ne savent pas faire la différence entre une clé publique et une clé privée, et les aider à se mouiller les pieds plus rapidement.
Nathan Basanese
Pour une raison quelconque, sous MacOS 10.14, cela ne formate pas le fichier avec l'en- Proc-Type: 4,ENCRYPTEDtête, ce qui est incompatible avec certaines applications recherchant une phrase secrète. Après avoir essayé plusieurs façons de le faire fonctionner, le moyen le plus simple de contourner le problème était de faire la même chose dans un conteneur Docker exécutant Ubuntu, puis de recopier la clé sur mon Mac.
ryanbrainard
38

Utilisez l'option -p pour ssh-keygen. Cela vous permet de changer le mot de passe plutôt que de générer une nouvelle clé.

Modifiez le mot de passe comme le montre sigjuice:

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

Le mot de passe requis sera le nouveau mot de passe. (Cela suppose que vous avez ajouté la clé publique ~/.ssh/id_rsa.pubà vos fichiers authorized_keys.) Testez avec ssh:

ssh -i ~/.ssh/id_rsa localhost

Vous pouvez avoir plusieurs clés avec des noms différents pour différentes utilisations.

BillThor
la source
//, Souhaitez-vous s'il vous plaît montrer un exemple, et comment vérifier que l'option a fonctionné, @BillThor?
Nathan Basanese
Je ne comprends pas. La phrase de passe est définie, je vois quand j'essaye de la changer à nouveau. Mais lorsque j'essaye de me connecter au serveur distant, il ne demande pas ce mot de passe, pourquoi?
Luka
1
C'est bon. Il demande une fois par session :) Je ne le savais pas.
Luka
Cela signifie-t-il que vous devez vous déconnecter et vous reconnecter? Fermer la fenêtre du terminal et la rouvrir ne fonctionne pas pour moi.
Simon H
Vous pouvez taper ssh-add -Dpour supprimer votre identité mise en cache. Ensuite, essayez de vous reconnecter et il vous demandera votre mot de passe. Utilisez ssh-add -lpour voir une liste de vos identités mises en cache.
Scott Nedderman
3

Vous pouvez également utiliser openssl:

openssl rsa -aes256 -in ~/.ssh/your_key -out ~/.ssh/your_key.enc
mv ~/.ssh/your_key.enc ~/.ssh/your_key
chmod 600 ~/.ssh/your_key

voir: https://security.stackexchange.com/a/59164/194668

sharez
la source
Je pense que je vais prendre le chemin ssh-keygen ;)
Michael P. Bazos
Merci d'avoir fourni une alternative openssl pour effectuer la tâche.
Nadjib Mami