205 votes

Pourquoi git peut ' t n’oubliez pas mon mot de passe sous Windows

J’ai tout simplement de démarrer à l’aide de git et je n’arrive pas à se souvenir de mon mot de passe j’utilise cmd.exe élevée et mon hôte git est github et j’ai créer une clé ssh comme ça guide sur github

mais j’ai toujours

221voto

RobertB Points 2932

Je me rends compte que cette question est venue sur deux ans, mais j'ai eu le même problème et un certain nombre de réponses ici, n'a pas complètement répondu à la question pour moi. Voici deux, étape par étape, des solutions, selon que vous utilisez TortoiseGit en plus de msysgit ou pas.

Première solution Suppose que Windows, msysgit, et le Mastic.

  1. Installer msysgit et de Mastic, comme indiqué.
  2. (Facultatif) Ajoutez le Mastic à votre chemin d'accès. (Si vous ne le faites pas, alors toutes les références à Mastic commandes ci-dessous doivent être préfixées par le chemin complet de l'exécutable approprié.)
  3. Si vous ne l'avez pas déjà fait, puis générer une clé de hachage, comme indiqué sur GitHub ou comme indiqué par votre Git hôte.
  4. Encore une fois, si vous ne l'avez pas déjà fait, convertir votre clé pour une utilisation avec du Mastic pageant.exe à l'aide de puttygen.exe. Les Instructions sont dans le Mastic de la documentation, dans ce guide utile, et plusieurs autres endroits dans le cyberespace.
  5. Exécuter le Mastic de pageant.exeouvrez votre .ppk fichier ("Ajouter une Clé"), et de fournir votre mot de passe pour votre clé.
  6. L'accès de Windows dialogue variables d'environnement (clic-Droit sur "Ordinateur", Cliquez sur "Propriétés", Cliquez sur "paramètres système Avancés" ou l'onglet "Avancé", cliquez sur "Variables d'Environnement"). Ajouter la variable d'environnement suivante:

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

    Remplacer "C:\full\path\to" avec le chemin d'installation complet pour le Mastic, où plink.exe est trouvé. Il est probablement préférable de l'ajouter à la "variables Utilisateur". Aussi, assurez-vous que le chemin d'accès que vous utilisez pour plink.exe correspond au chemin d'accès que vous utilisez pour Pageant (pageant.exe). Dans certains cas, vous pouvez avoir plusieurs installations de Mastic car il peut être installé avec d'autres applications. À l'aide de plink.exe à partir d'une seule installation et pageant.exe à partir d'un autre susceptible de vous causer des soucis.

  7. Ouvrez une invite de commande.

  8. Si vous essayez de vous connecter à un dépôt git hébergé chez Github.com puis exécutez la commande suivante:

    plink.exe git@github.com

    Si le dépôt git vous essayez de vous connecter est hébergé quelque part d'autre, puis le remplacer git@github.com avec un nom d'utilisateur et URL. (En supposant que Github), Vous devez être informé que la clé d'hôte du serveur n'est pas mis en cache, et a demandé si vous avez confiance en elle. Réponse avec un y de. Cela va ajouter la clé d'hôte du serveur de Mastic liste des hôtes connus. Sans cette étape commandes git ne fonctionnera pas correctement. Après appuyer sur la touche enter, Github vous informe que Github ne fournit pas d'accès shell. C'est très bien...nous n'avons pas besoin il. (Si vous vous connectez à un autre hôte, et il vous donne accès au shell, il est probablement préférable de résilier le lien sans rien faire d'autre.)

  9. Tout fait! Commandes Git doit maintenant travailler à partir de la ligne de commande. Vous voudrez peut-être avoir pageant.exe chargez votre .ppk fichier automatiquement au moment du démarrage, en fonction de combien de fois vous serez dans le besoin.

Deuxième solution Suppose que Windows, msysgit, et TortoiseGit.

TortoiseGit vient avec du Mastic exécutables, et spécialement version modifiée de plink (appelé TortoisePlink.exe) qui rendra les choses plus facile.

  1. Installer msysgit et TortoiseGit, comme indiqué.
  2. Si vous ne l'avez pas déjà fait, puis générer une clé de hachage, comme indiqué sur GitHub ou comme indiqué par votre Git hôte.
  3. Encore une fois, si vous ne l'avez pas déjà fait, convertir votre clé pour une utilisation avec TortoiseGit de l'pageant.exe à l'aide de TortoiseGit de l' puttygen.exe. Les Instructions sont dans le Mastic de la documentation, dans le guide utile liée à la première solution, et plusieurs autres endroits dans le cyberespace.
  4. Exécuter TortoiseGit de l' pageant.exeouvrez votre .ppk fichier ("Ajouter une Clé"), et de fournir votre mot de passe pour votre clé.
  5. L'accès de Windows dialogue variables d'environnement (clic-Droit sur "Ordinateur", Cliquez sur "Propriétés", Cliquez sur "paramètres système Avancés" ou l'onglet "Avancé", cliquez sur "Variables d'Environnement"). Ajouter la variable d'environnement suivante:

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

    Remplacer "C:\full\path\to" avec le chemin d'installation complet pour TortoiseGit, où TortoisePlink.exe est trouvé. Il est probablement préférable de l'ajouter à la "variables Utilisateur". Aussi, assurez-vous que le chemin d'accès que vous utilisez pour TortoisePlink.exe correspond au chemin d'accès que vous utilisez pour Pageant (pageant.exe). Dans certains cas, vous pouvez avoir plusieurs installations de Mastic car il peut être installé avec d'autres applications. À l'aide de TortoisePlink.exe à partir de la TortoiseGit d'installation et de pageant.exe à partir d'une autre installation d'une autre application (ou à partir d'un autonome Mastic d'installation) sera susceptible de vous causer des soucis.

  6. Tout fait! Commandes Git doit maintenant travailler à partir de la ligne de commande. La première fois que vous essayez de vous connecter à votre dépôt git, vous aurez probablement être informé que la clé d'hôte du serveur n'est pas mis en cache, et vous demande si vous faites confiance au serveur. Cliquez sur "Oui". (C'est TortoisePlink.exe dans l'action.)

    Vous voudrez peut-être avoir pageant.exe chargez votre .ppk fichier automatiquement au moment du démarrage, en fonction de combien de fois vous serez dans le besoin.

Troisième solution Suppose Fenêtre, msysgit, et natif de l'invite de commande.

  1. Installer msysgit
  2. Assurez-vous de permettre à git pour être utilisé sur la MS-DOS invite de commande
  3. Créer git.cmd avec le lot suivant de script

    @echo off
    verify other 2>nul
    setlocal EnableDelayedExpansion
    if not %ERRORLEVEL% equ 0 (
        echo Unable to enable extensions
        goto failure
    )
    
    rem Start the ssh-agent if needed by git
    for %%i in ("git.exe") do set GIT=%%~$PATH:i
    if exist "%GIT%" (
        rem Get the ssh-agent executable
        for %%i in ("ssh-agent.exe") do set SSH_AGENT=%%~$PATH:i
        if not exist "%SSH_AGENT%" (
            for %%s in ("%GIT%") do set GIT_DIR=%%~dps
            for %%s in ("!GIT_DIR!") do set GIT_DIR=!GIT_DIR:~0,-1!
            for %%s in ("!GIT_DIR!") do set GIT_ROOT=%%~dps
            for %%s in ("!GIT_ROOT!") do set GIT_ROOT=!GIT_ROOT:~0,-1!
            for /D %%s in ("!GIT_ROOT!\bin\ssh-agent.exe") do set SSH_AGENT=%%~s
            if not exist "!SSH_AGENT!" (
                goto ssh-agent-done
            )
        )
        rem Get the ssh-add executable
        for %%s in ("!SSH_AGENT!") do set BIN_DIR=%%~dps
        for %%s in ("!BIN_DIR!") do set BIN_DIR=!BIN_DIR:~0,-1!
        for /D %%s in ("!BIN_DIR!\ssh-add.exe") do set SSH_ADD=%%~s
        if not exist "!SSH_ADD!" (
            goto ssh-agent-done
        )
        rem Check if the agent is running
        for /f "tokens=1-2" %%a in ('tasklist /fi "imagename eq ssh-agent.exe"') do (
            echo %%b | findstr /r /c:"[0-9][0-9]*" > nul
            if "!errorlevel!" == "0" (
                set SSH_AGENT_PID=%%b
            )
        )
        rem Remove old sockets
        if [!SSH_AGENT_PID!] == [] (
            echo Removing old ssh-agent sockets
            for /d %%d in (%TEMP%\ssh-??????*) do rmdir /s /q %%d
        )
        rem Connect up the current ssh-agent
        if not [!SSH_AGENT_PID!] == [] (
            echo Found ssh-agent at !SSH_AGENT_PID!
            for /d %%d in (%TEMP%\ssh-??????*) do (
                for %%f in (%%d\agent.*) do (
                    set SSH_AUTH_SOCK=%%f
                    set SSH_AUTH_SOCK=!SSH_AUTH_SOCK:%TEMP%=/tmp!
                    set SSH_AUTH_SOCK=!SSH_AUTH_SOCK:\=/!
                )
            )
            if not [!SSH_AUTH_SOCK!] == [] (
                echo Found ssh-agent socket at !SSH_AUTH_SOCK!
            )
            if [!SSH_AUTH_SOCK!] == [] (
                echo Failed to find ssh-agent socket
                set SSH_AGENT_PID=
            )
        )
        rem See if we have the key
        "!SSH_ADD!" 1>nul 2>nul
        set result=!ERRORLEVEL!
        if not !result! == 0 (
            if !result! == 2 (
                echo|set /p=Starting ssh-agent:
                for /f "tokens=1-2 delims==;" %%a in ('"!SSH_AGENT!"') do (
                    if not [%%b] == [] (
                        set %%a=%%b
                    )
                )
                echo. done
            )
            set "HOME=%USERPROFILE%"
            "!SSH_ADD!"
            echo.
        )
    )
    :ssh-agent-done
    :failure
    
    endlocal & set "SSH_AUTH_SOCK=%SSH_AUTH_SOCK%" ^
             & set "SSH_AGENT_PID=%SSH_AGENT_PID%"
    
    rem Start the command window
    call cmd %*
    
  4. Double-cliquez sur git.cmd

  5. Entrez phrases de passe SSH
  6. Tout fait! Commandes Git devrait maintenant fonctionner dans les natifs de l'invite de commande.

21voto

Franz Points 5924

Pour tout le monde qui ont besoin des instructions plus détaillées, consultez la page suivante : http://help.github.com/working-with-key-passphrases/

10voto

Dustin Points 35205

Ce n’est pas git, c’est ssh.

Je ne fais pas windows, mais ssh a un concept d’agent qui peut se souvenir de mots de passe pour vous. OS X a cette option par défaut. Votre ssh client a sans doute un moyen de configurer cela.

8voto

Grant Limberg Points 7931

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

ssh-agent peut également fonctionner. Essayez d’exécuter qui et voir si il se souviendra de votre mot de passe.

7voto

hwjp Points 3041

[edit - mal lu la question, c'est une réponse à un problème connexe. laissant reformulé version pour la postérité]

Mon cas est que j'ai été il essaie de pousser pour une pension qui était hébergé sur un de nos serveurs. Chaque fois que j'ai essayé de faire un push git pour me demander mon mot de passe (n. - b.) - le mot de passe, pas le mot de passe pour ma clé privée).

En ajoutant ma clé publique à l'autorisés clés sur le serveur, j'ai pu obtenir un mot de passe gratuit pousse à ce serveur. Et, parce qu'il n'y a pas de phrase de passe sur ma clé privée (qui est une mauvaise pratique btw!) Je n'ai pas besoin de taper quoi que ce soit.

Voici la commande pour ajouter votre clé publique sur 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 la même chose en se connectant sur le serveur, et en ajoutant manuellement votre clé publique pour le fichier ~/.ssh/authorized_keys

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X