Comment changer ma phrase secrète de clé privée?

284

J'ai une paire de clés publique / privée existante. La clé privée est protégée par un mot de passe et le chiffrement peut être RSA ou DSA. Ces clés sont le type que vous générez avec ssh-keygenet stockez généralement sous ~/.ssh.

J'aimerais changer le mot de passe de la clé privée. Comment puis-je m'y prendre, sur un shell Unix standard?

Aussi, comment puis-je simplement supprimer le mot de passe? Il suffit de changer pour vider?

kch
la source

Réponses:

372

Pour changer la phrase secrète de votre clé DSA par défaut:

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

Indiquez ensuite votre ancienne phrase de passe et la nouvelle (deux fois) à l'invite. (Utilisez ~/.ssh/id_rsasi vous avez une clé RSA.)

Plus de détails de 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
la source
1
Ceci provient de la page de manuel fournie avec net-misc / openssh-5.2_p1-r2 sur Gentoo Linux.
Mike Mazur
12
En outre, par souci de futur paresseux, je inverserais l'ordre: réponses rapides en premier, page de manuel plus tard.
kch
2
Je pense que la réponse est excellente car elle indique à la fois où vous pouvez modifier le mot de passe et où chercher la réponse. J'ai aidé beaucoup de gens à configurer les clés SSH et pour eux, se souvenir de l'outil qu'ils ont utilisé n'est pas toujours facile. En outre, rechercher la réponse sur
Internet
5
Si vos machines utilisent OpenSSH> = 6.5, vous devriez utiliser l' -ooption permettant d'activer le nouveau format de clé privée (bcrypt en tant que KDF par défaut). Avec les anciennes versions OpenSSH, utilisez PKCS # 8 pour des fichiers de clés privées plus sécurisés .
Quinn Comendant
2
@FranciscoLuz la commande dans ma réponse est spécifique à une clé DSA. Si vous avez une clé RSA, votre commande est correcte. J'ai ajouté un texte à la réponse pour résoudre ce problème.
Mike Mazur
-9

Supprimez vos clés publiques / privées SSH:

rm ~/.ssh/id_rsa*

Recréez la paire de clés en choisissant une nouvelle phrase secrète:

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

Ajoutez la clé privée nouvellement créée à votre trousseau OS X pour stocker la phrase secrète et gérer son déverrouillage automatique:

ssh-add -K ~/.ssh/id_rsa

Copiez la clé publique dans le Presse-papiers OS X pour l'ajouter à des services Web tels que GitHub, etc.

cat ~/.ssh/id_rsa.pub | pbcopy

Ajoutez votre clé publique nouvellement créée au ~/.ssh/authorized_keysfichier du serveur distant. Assurez-vous de disposer des autorisations appropriées pour les ~/.sshdossiers distant (700) et ~/.ssh/authorized_keys(600). Vous voudrez peut-être étudier ssh-copy-idpour faciliter ce processus.

gauta
la source
3
L’affiche demandait comment changer la phrase secrète de leur clé, et non la jeter et en générer une nouvelle; et ils n'ont jamais mentionné OS X.
musicinmybrain
2
J'aurais voté cette réponse s'il n'y avait pas eu ces trois problèmes: 1. La suppression des anciennes clés n'est pas un bon début car vous en aurez besoin lors de la mise à jour authorized_keys. 2. Vous n'avez pas expliqué pourquoi il est préférable de créer de nouvelles clés plutôt que de changer les mots de passe avec les anciennes. 3. Vous faites des hypothèses sur le système d'exploitation, ce que la question ne prend pas en charge.
Kasperd