Comment faire git ne demande pas de phrase secrète pour la clé ssh sur Windows?

43

J'utilise git bash et j'installe la clé ssh à l'aide de ssh-keygen et chaque fois que je fais quelque chose avec un repo git, demandez-moi la phrase secrète pour /c/Users/jankiewj/.ssh/id_rsa. Existe-t-il un moyen de désactiver cette phrase secrète.

jcubic
la source
Cette page sur serverfault pourrait aider serverfault.com/questions/194567/…
@Radoo ça n'a pas aidé.
jcubic

Réponses:

56

Vous pouvez l'exécuter dans git bash:

eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa

il demandera une phrase de passe dans la deuxième commande, et c'est tout. Chaque action supplémentaire que vous devrez effectuer (qui nécessitait une phrase de passe) ne vous demandera pas de phrase de passe (voir un exemple dans la capture d'écran ci-dessous):

ajout d'une phrase de passe dans git bash sous Windows

jcubic
la source
7
Je dois le saisir à nouveau, dès que je ferme git bash ... y a-t-il une solution permanente?
Black
@Black c'est par session bash, je l'ai mis .bashrcdonc à chaque fois que j'ouvre git bash je reçois l'invite et pour cette session je suis prêt.
jcubic
Que mettez-vous exactement dans .bashrc? Et où est .bashrc?
Black
Edit: nevermind, vous devez créer le fichier vous-même ~/.bashrcpuis entrer les lignes de votre message et l'enregistrer, c'est ça :) thx!
Black
Au lieu d'utiliser les lignes ci-dessus, en particulier dans le .bashrc, j'utiliserais un script et le placerais dans le .bash_profileou .profile. Voici un extrait de la partie principale de mon .bash_profile, cela devrait résoudre ce problème pour tous ceux qui recherchent toujours une réponse; c'est similaire à une réponse ci-dessous. En haut du script, je charge mon .bashrc, ce qui, s'il n'est pas applicable, laisse cela de côté. Remarque: vous devrez modifier les références à id_rsace que vous avez nommé votre clé SSH privée, et peut-être le chemin.
Rockin4Life33
9

Une solution légèrement meilleure et permanente consiste à lancer automatiquement l'agent ssh lors de l'ouverture de git bash sur Windows. Vous pouvez copier / coller ce qui suit dans votre .profile ou .bashrc. Je préfère le mettre sur le .profile

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

Cette solution est tirée de cet article d'aide github

velval
la source
J'ai mis mon code simple en .bashrcquoi votre solution est-elle différente? Sous Windows bash, chaque shell est indépendant, donc l'agent n'est jamais en cours d'exécution lorsque vous exécutez le shell.
jcubic
La solution fonctionne bien en mettant le code dans le .bashrc. Demander la phrase secrète ssh uniquement la première fois. J'ai sauvé ma vie. Je vous remercie.
Ben Asmussen
merci qui m'a sauvé la vie.
gumuruh
Cela devrait vraiment être la réponse acceptée car elle présente une solution qui est persistante et répond mieux à ce que je pense que le PO demandait.
Richard D
Que dois-je faire si j'ai accidentellement tapé le mauvais mot de passe au démarrage? Modifier: Basé sur superuser.com/a/271673/647110 , vous pouvez ssh-add -Dsupprimer toutes les clés.
Nils Guillermin
1

Je ne sais pas si je veux le recommander, mais lorsque vous créez la clé et que vous avez demandé de définir le mot de passe, appuyez simplement sur entrée et ignorez le mot de passe.

Jetez un œil à ce lien pour savoir comment utiliser ssh-keygen: https://help.github.com/articles/working-with-ssh-key-passphrases/

Peut-être ssh-agentpeut - il vous aider d'une manière ou d'une autre. Mais pas sûr sans connaître votre système actuel.

David Bern
la source
4
certainement pas une bonne réponse
Kennet Celeste
C'était le seul moyen de le résoudre sur Windows 10. Après avoir suivi toutes les étapes du guide github «Générer une nouvelle clé SSH et l'ajouter au ssh-agent», il me demandait toujours la phrase secrète. Même après l'avoir ajouté. Ce comportement interrompait mon flux de déploiement Maven, car à la mvn release:performphase, il essaie d'extraire la balise de publication sans fournir la phrase secrète. Donc, seule la suppression de la phrase secrète a résolu ce problème.
Fernando Miguel Carvalho
-3

Entrez cette commande git dans votre emplacement de dépôt " ssh-keygen -p " Cela vous invitera ensuite à entrer l'emplacement du fichier de clés, l'ancienne phrase secrète et la nouvelle phrase secrète (qui peuvent être laissées vides pour n'avoir aucune phrase secrète). N'entrez rien dans le nouveau mot de passe et cela supprimera la phrase secrète

bharti
la source
1
Laisser un mot de passe vide n'est pas sûr et de nombreux développeurs d'entreprise ne pourront pas avoir de phrase secrète en raison de restrictions. C'est une solution de contournement boiteuse, pas une solution pour le problème OP.
cbaldan
boiteux peut-être, mais pour un usage local uniquement, savoureux et expéditif ™
Jim P