823 votes

Git continue de me demander la phrase de passe de ma clé ssh

J'ai créé des clés comme indiqué dans le tutoriel de github, je les ai enregistrées auprès de github et j'ai essayé d'utiliser explicitement ssh-agent. Pourtant, git continue de me demander ma phrase de passe à chaque fois que j'essaie de faire un pull ou un push.

Quelle pourrait en être la cause ?

0 votes

7voto

Roberto Amoroso Points 66

Pour Windows o Linux utilisateurs, une solution possible est décrite sur Docs GitHub que je rapporte ci-dessous pour votre commodité.

Vous pouvez exécuter ssh-agent automatiquement lorsque vous ouvrez le shell bash ou Git. Copiez les lignes suivantes et collez-les dans votre ~/.profile o ~/.bashrc fichier :

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

Si votre clé privée n'est pas stockée dans l'un des emplacements par défaut (tels que ~/.ssh/id_rsa ), vous devrez indiquer à votre agent d'authentification SSH où le trouver. Pour ajouter votre clé à ssh-agent, tapez ssh-add ~/path/to/my_key .

Maintenant, quand vous première exécution Git Bash, vous êtes invité à saisir votre phrase de passe. El ssh-agent continuera à fonctionner jusqu'à ce que vous vous déconnectiez, que vous éteigniez votre ordinateur ou que vous arrêtiez le processus.

7voto

Jeff Welling Points 339

Il semble que vous ayez des problèmes avec SSH-Agent lui-même. Je voudrais essayer de résoudre ce problème.

1) Avez-vous fait ssh-add pour ajouter votre clé à SSH ?

2) Fermez-vous la fenêtre du terminal entre deux utilisations, car si vous fermez la fenêtre, vous devrez entrer à nouveau le mot de passe lorsque vous la rouvrirez.

2 votes

Il serait bon d'ajouter des informations sur la façon de résoudre le premier problème Jeff Welling.

6voto

Si vous êtes sur Win10 :

J'ai eu le même problème. (auparavant, il fallait mettre à jour ssh-agent individuellement avec un script de aquí à cause d'un autre problème)

Git a accédé à ma configuration ssh (git pull a lancé des exceptions lorsque j'avais des lignes absurdes dans la configuration ssh), mais n'a jamais semblé se soucier de la clé privée que j'avais ajoutée via ssh-agent et référencée dans ma configuration.

Ce qui a résolu le problème a été d'exécuter la commande suivante dans PowerShell :

git config core.sshCommand (get-command ssh).Source.Replace('\','/')

(Les détails sont dans ce lien )

3voto

alx lark Points 661

J'ai essayé différentes solutions mais rien n'y fait. Mais cette étape ( Mon environnement SSH GitBash me demande toujours ma phrase de passe, que puis-je faire ? ) de Bitbucket.com semble bien fonctionner :

L'idée est la suivante :

  1. vous créez ~/.bashrc fichier

  2. ajouter suivre script :

    SSH_ENV=$HOME/.ssh/environment
    
    # start the ssh-agent
        function start_agent {
        echo "Initializing new SSH agent..."
        # spawn ssh-agent
        /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
        echo succeeded
        chmod 600 "${SSH_ENV}"
        . "${SSH_ENV}" > /dev/null
        /usr/bin/ssh-add
    }
    
    if [ -f "${SSH_ENV}" ]; then
         . "${SSH_ENV}" > /dev/null
         ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
            start_agent;
        }
    else
        start_agent;
    fi
  3. réexécution de Bash

3voto

Darkov Points 825

Une autre solution possible qui n'est pas mentionnée ci-dessus est de vérifier votre télécommande avec la commande suivante :

git remote -v

Si la télécommande ne commence pas par git mais par https, vous pouvez la changer pour git en suivant l'exemple ci-dessous.

git remote -v // origin is https://github.com/user/myrepo.git
git remote set-url origin git@github.com:user/myrepo.git
git remote -v // check if remote is changed

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