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)?


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,


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

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.


//, 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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.