web-dev-qa-db-fra.com

Pourquoi git ne se souvient pas de ma phrase secrète sous Windows

Je viens de commencer à utiliser Git et je ne parviens pas à me rappeler mon mot de passe composé. J'utilise cmd.exe élevé et mon hôte Git est github et j'ai créé une clé ssh comme celle sur github.

mais j'obtiens toujours

*\subnus.mvc>git Push Origin master
Enter passphrase for key '/c/Users/Subnus/.ssh/id_rsa':
125
Nesizer

Je me rends compte que cette question approche de deux ans, mais j'avais le même problème et plusieurs réponses ici ne m'ont pas complètement répondu à la question. Voici deux solutions pas à pas, selon que vous utilisiez TortoiseGit en plus de msysgit ou non.

Première solution En supposant que Windows, msysgit et PuTTY.

  1. Installez msysgit et PuTTY comme indiqué.
  2. (Facultatif) Ajoutez PuTTY à votre chemin. (Si vous ne le faites pas, toute référence aux commandes PuTTY ci-dessous doit être précédée du chemin complet de l'exécutable approprié.)
  3. Si vous ne l'avez pas déjà fait, générez un hachage de clé comme indiqué par GitHub ou par votre hôte Git.
  4. Encore une fois, si vous ne l’avez pas déjà fait, convertissez votre clé pour pouvoir l’utiliser avec le fichier pageant.exe de PuTTY en utilisant puttygen.exe . Les instructions se trouvent dans la documentation de PuTTY, dans ce guide utile , et dans plusieurs autres endroits du cyberespace.
  5. Exécutez le fichier pageant.exe de PuTTY, ouvrez votre fichier .ppk ("Ajouter une clé") et indiquez votre phrase secrète pour votre clé.
  6. Accédez à la boîte de dialogue des variables d'environnement de Windows (cliquez avec le bouton droit de la souris sur "Ordinateur", cliquez sur "Propriétés", cliquez sur "Paramètres système avancés" ou sur l'onglet "Avancé", puis sur "Variables d'environnement"). Ajoutez la variable d'environnement suivante:

    GIT_SSH = C:\full\path\to\plink.exe

    Remplacez "C:\full\path\to" par le chemin d'installation complet de PuTTY, où se trouve plink.exe. Il est probablement préférable de l'ajouter à la section "Variables utilisateur". Assurez-vous également que le chemin que vous utilisez pour plink.exe correspond à celui que vous utilisez pour Pageant (pageant.exe). Dans certains cas, vous pouvez avoir plusieurs installations de PuTTY car il peut être installé avec d’autres applications. L'utilisation de plink.exe d'une installation et de pageant.exe d'une autre vous causera probablement des problèmes.

  7. Ouvrez une invite de commande.

  8. Si vous essayez de vous connecter à un référentiel git hébergé sur Github.com, exécutez la commande suivante:

    plink.exe [email protected]

    Si le référentiel git auquel vous essayez de vous connecter est hébergé ailleurs, remplacez [email protected] par un nom d'utilisateur et une URL appropriés. (En supposant que Github) Vous devriez être informé que la clé de l'hôte du serveur n'est pas mis en cache, et vous demander si vous lui faites confiance. Répondez avec un y . Cela ajoutera la clé d'hôte du serveur à la liste des hôtes connus de PuTTY. Sans cette étape, les commandes git ne fonctionneront pas correctement. Après avoir appuyé sur Entrée, Github vous informe que Github ne fournit pas d'accès à Shell. C'est bien ... nous n'en avons pas besoin. (Si vous vous connectez à un autre hôte et que cela vous donne un accès à Shell, il est probablement préférable de mettre fin au lien sans rien faire d'autre.)

  9. Terminé! Les commandes Git devraient maintenant fonctionner à partir de la ligne de commande. Vous voudrez peut-être avoir pageant.exe chargez votre fichier .ppk automatiquement au démarrage , selon la fréquence à laquelle vous en aurez besoin.

Deuxième solution En supposant que Windows, msysgit et TortoiseGit.

TortoiseGit est fourni avec les exécutables PuTTY et une version spécialement modifiée de plink (appelée TortoisePlink.exe) qui facilitera les choses.

  1. Installez msysgit et TortoiseGit comme indiqué.
  2. Si vous ne l'avez pas déjà fait, générez un hachage de clé comme indiqué par GitHub ou par votre hôte Git.
  3. Encore une fois, si vous ne l'avez pas déjà fait, convertissez votre clé pour pouvoir l'utiliser avec le fichier pageant.exe de TortoiseGit à l'aide du fichier puttygen.exe de TortoiseGit. Les instructions se trouvent dans la documentation de PuTTY, dans le guide utile associé à la première solution et à plusieurs autres endroits dans le cyberespace.
  4. Exécutez le fichier pageant.exe de TortoiseGit, ouvrez votre fichier .ppk ("Ajouter une clé") et indiquez votre phrase secrète pour votre clé.
  5. Accédez à la boîte de dialogue des variables d'environnement de Windows (cliquez avec le bouton droit de la souris sur "Ordinateur", cliquez sur "Propriétés", cliquez sur "Paramètres système avancés" ou sur l'onglet "Avancé", puis sur "Variables d'environnement"). Ajoutez la variable d'environnement suivante:

    GIT_SSH = C:\full\path\to\TortoisePlink.exe

    Remplacez "C:\full\path\to" par le chemin d'installation complet de TortoiseGit, où se trouve TortoisePlink.exe. Il est probablement préférable de l'ajouter à la section "Variables utilisateur". Assurez-vous également que le chemin que vous utilisez pour TortoisePlink.exe correspond à celui que vous utilisez pour Pageant (pageant.exe). Dans certains cas, vous pouvez avoir plusieurs installations de PuTTY car il peut être installé avec d’autres applications. L'utilisation de TortoisePlink.exe à partir de l'installation de TortoiseGit et de pageant.exe à partir d'une autre installation d'une autre application (ou d'une installation autonome de PuTTY) risque de vous poser problème.

  6. Terminé! Les commandes Git devraient maintenant fonctionner à partir de la ligne de commande. La première fois que vous essayez de vous connecter à votre référentiel git, vous serez probablement informé du fait que la clé d'hôte du serveur n'est pas mise en cache et vous demande si vous faites confiance au serveur. Cliquez sur "Oui". (Ceci est TortoisePlink.exe en action.)

    Vous voudrez peut-être avoir pageant.exe chargez votre fichier .ppk automatiquement au démarrage , selon la fréquence à laquelle vous en aurez besoin.

Troisième solution Assume Window, msysgit et l'invite de commande native.

  1. Installer msysgit
  2. Assurez-vous d'autoriser l'utilisation de git sur l'invite de commande MS-DOS.
  3. Courir start-ssh-agent
  4. Entrez les mots de passe SSH
  5. Terminé! Les commandes Git devraient maintenant fonctionner dans l'invite de commande native.
196
RobertB

Pour tous ceux qui ont besoin d’instructions plus détaillées, voir cette page: http://help.github.com/working-with-key-passphrases/

19
Franz

Si vous utilisez Git bash sous Windows vous pouvez effectuer les opérations suivantes:

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, une fois la phrase secrète requise) ne vous demandera pas la phrase secrète (voir un exemple dans la capture d'écran ci-dessous):

adding pass phrase in Git bash on Windows

J'espère que ça aide.

À votre santé,

Gars.

12
Guy Avraham

Une solution supplémentaire, 5 ans, 8 mois et 6 jours après la publication de la question ne serait pas une mauvaise idée alors allez-y.

REMARQUE: Supposons que vous utilisez un ordinateur Windows.

  1. Téléchargez le git-credential-winstore .
  2. Exécuter! Si vous avez GIT dans votre variable d’environnement PATH, cela devrait fonctionner. Si vous ne le faites pas, lancez git-credential-winstore -i C:\Path\To\Git.exe.

Lors de votre prochaine tentative de validation dans un référentiel, vous serez invité à saisir vos informations d'identification. Cela devrait être ça. Vos informations d'identification ne vous seront plus demandées jusqu'à ce que vous changiez votre mot de passe.


Juste pour votre connaissance ... Vos informations d'identification sont stockées dans le Credential Store de Windows.

Où stockez-vous mes identifiants?

Cette application utilise simplement la banque d'informations d'identification Windows existante pour stocker vos informations d'identification. Vous pouvez voir les informations d'identification stockées en allant dans Panneau de configuration> Comptes d'utilisateurs> Gestionnaire des informations d'identification, puis en choisissant "Informations d'identification Windows". Les entrées commençant par "git:" proviennent de git-credential-winstore.

12
Alex Essilfie

Ce n'est pas git, c'est SSH.

Je ne fais pas de Windows, mais SSH a un concept d'agent qui peut se rappeler des mots de passe pour vous. OS X l’a activé par défaut. Votre client ssh a probablement un moyen de le configurer.

10
Dustin

Si vous définissez un mot de passe pour votre fichier de clé, vous devrez toujours saisir ce mot de passe lors de la connexion. Si vous créez une clé sans mot de passe, vous n'aurez pas à la saisir à chaque fois. Cependant, toute personne ayant accès à votre fichier de clé peut désormais se connecter à votre compte github.

ssh-agent peut aussi fonctionner. Essayez d’exécuter cela et voyez s’il se souviendra de votre phrase secrète.

7
Grant Limberg

[modifier - mal interprété la question, il s'agit d'une réponse à un problème connexe. laissant la version reformulée pour la postérité]

Mon cas était que j'essayais de pousser vers un dépôt qui était hébergé sur l'un de nos serveurs. Chaque fois que j'essayais de faire un Push, git me demandait mon mot de passe (nb - mot de passe, pas la phrase secrète de ma clé privée).

En ajoutant ma clé publique aux clés autorisées sur le serveur, j'ai pu obtenir des envois sans mot de passe sur ce serveur. Et, parce qu'il n'y avait pas de mot de passe sur ma clé privée (ce qui est une mauvaise pratique d'ailleurs!), Je n'avais pas besoin de taper quoi que ce soit.

Voici la commande pour ajouter votre clé publique à un serveur. Il suppose que l'utilisateur git est l'utilisateur sur le serveur.

cat .ssh/id_rsa.pub | ssh git@GIT_MASTER_IP 'cat >> .ssh/authorized_keys'

Vous pouvez obtenir le même résultat en vous connectant au serveur et en ajoutant manuellement votre clé publique au fichier à l'adresse ~/.ssh/authorized_keys

7
hwjp

Je me rends compte que cela fait déjà plusieurs années, mais je suis tombé sur cette question en essayant de trouver une solution, et j'ai trouvé quelque chose qui convient à tous les niveaux d'expertise, alors j'ai pensé partager.

GitHub fournit un programme d’installation très utile qui rend tout agréable et simple: https://help.github.com/articles/caching-your-github-password-in-git/

4
roobeedeedada

Il existe une solution beaucoup plus simple à ce problème si le fait de stocker votre mot de passe en texte brut et que vous utilisez TortoiseGit ne vous gêne pas.

Créez simplement un _netrc fichier dans votre répertoire de profil utilisateur - c’est-à-dire que sous Windows 7, il s’agit de C:\Users\MyName\_netrc. Ce fichier stockera vos informations de connexion dans ce format:

machine bitbucket.org login thisismyname password p455w0rD
machine bitbucket.org login another_account password pwdpwdPWd
machine github.com login thisismynameagain password p455w0rD

J'utilise TortoisePLink en tant que client SSH et cela fonctionne parfaitement.

3
blade

Vous pouvez créer un .bashrc fichier dans le répertoire personnel de votre utilisateur comme C:/Users/youruser, et y mettre:

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

Ce script s'exécute chaque fois après l'exécution de bash. Il vous faudra donc entrer le mot de passe une seule fois, lorsque git-bash a démarré!

Certaines versions de bash nécessitent .bash_profile fichier à la place .bashrc, donc juste au cas où clone .bashrc:

copy .bashrc .bash_profile
2

peut essayer d'ajouter -k arg quand vous le faites;

ssh-add -k ~/.ssh/id_rsa
1
tarikakyol