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)?
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.
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.
Bad passphrase
uneid_ed25519
clé mais que le mot de passe est correct, vous utilisez probablement un niveau inférieurssh-keygen
pour le gérer.Réponses:
Essayez la commande
ssh-keygen -p -f keyfile
Depuis la page de manuel de ssh-keygen
Exemple:
la source
$ 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.Proc-Type: 4,ENCRYPTED
tê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.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:
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:Vous pouvez avoir plusieurs clés avec des noms différents pour différentes utilisations.
la source
ssh-add -D
pour supprimer votre identité mise en cache. Ensuite, essayez de vous reconnecter et il vous demandera votre mot de passe. Utilisezssh-add -l
pour voir une liste de vos identités mises en cache.Vous pouvez également utiliser
openssl
:voir: https://security.stackexchange.com/a/59164/194668
la source