web-dev-qa-db-fra.com

Comment puis-je supprimer le mot de passe pour la clé SSH sans avoir à créer une nouvelle clé?

J'ai défini un mot de passe lors de la création d'une nouvelle clé SSH sur mon ordinateur portable. Mais, comme je le sais maintenant, cela est très pénible lorsque vous essayez de vous engager ( Git et SVN ) dans un emplacement distant sur SSH plusieurs fois par heure.

Une façon dont je peux penser est de supprimer mes clés SSH et d’en créer de nouvelles. Existe-t-il un moyen de supprimer la phrase secrète tout en conservant les mêmes clés?

863
btbytes

Réponse courte:

$ ssh-keygen -p

Vous serez alors invité à entrer l'emplacement du fichier de clés, l'ancienne phrase secrète et la nouvelle phrase secrète (qui peuvent être laissés vides pour ne pas avoir de phrase secrète).

Si vous souhaitez tout faire sur une seule ligne sans invite, procédez comme suit:

$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]

Important: Attention, lors de l'exécution des commandes, elles seront généralement consignées dans votre fichier ~/.bash_history (ou similaire) en texte brut, y compris tous les arguments fournis (c'est-à-dire les phrases secrètes dans ce cas). Il est donc recommandé d’utiliser la première option à moins que vous n’ayez une raison spécifique de faire autrement. Notez cependant que vous pouvez toujours utiliser -f keyfile sans avoir à spécifier -P ni -N, et que le fichier de clés par défaut est ~/.ssh/id_rsa, de sorte que dans de nombreux cas, il n'est même pas nécessaire.

Vous voudrez peut-être envisager d'utiliser ssh-agent, qui peut mettre la phrase secrète en cache pendant un certain temps. Les dernières versions de gpg-agent prennent également en charge le protocole utilisé par ssh-agent.

1646
Torsten Marek

Vous voudrez peut-être ajouter les éléments suivants à votre fichier .bash_profile (ou équivalent), qui démarre ssh-agent à la connexion.

if [ -f ~/.agent.env ] ; then
    . ~/.agent.env > /dev/null
    if ! kill -0 $SSH_AGENT_PID > /dev/null 2>&1; then
        echo "Stale agent file found. Spawning new agent… "
        eval `ssh-agent | tee ~/.agent.env`
        ssh-add
    fi 
else
    echo "Starting ssh-agent"
    eval `ssh-agent | tee ~/.agent.env`
    ssh-add
fi

Sur certaines distributions Linux (Ubuntu, Debian), vous pouvez utiliser:

ssh-copy-id -i ~/.ssh/id_dsa.pub username@Host

Cela va copier l'ID généré sur une machine distante et l'ajouter au trousseau.

Vous pouvez en lire plus ici et ici .

36
mlambie

$ ssh-keygen -p a travaillé pour moi

Ouvert git bash. Collé: $ ssh-keygen -p

Appuyez sur Entrée pour l'emplacement par défaut.

Entrez l'ancien mot de passe

Entrez une nouvelle phrase secrète - BLANK

Confirmer la nouvelle phrase de passe - BLANK

BOOM la douleur d'entrer dans la phrase secrète pour git Push avait disparu.

Merci!

31
Karan