web-dev-qa-db-fra.com

Git n'arrête pas de me demander ma phrase secrète ssh

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

Quelle pourrait-être la cause?

471
Rogach

Une fois que vous avez démarré l'agent SSH avec:

eval $(ssh-agent)
  1. Vous devez y ajouter votre clé privée:

    ssh-add
    

    Cela vous demandera votre phrase secrète une seule fois, et vous devriez alors être autorisé à pousser, à condition que vous ayez téléchargé la clé publique sur Github.

  2. Pour enregistrer la clé de façon permanente sur macOS:

    ssh-add -K  
    

    Cela persistera après la fermeture et la réouverture en le stockant dans le trousseau de l'utilisateur.

927

Cela m’arrive après des redémarrages depuis la mise à niveau d’OS X El Capitan (10.11) vers macOS Sierra (10.12). La solution ssh-add fonctionnait temporairement, mais ne persisterait pas lors d'un autre redémarrage.

La solution permanente consistait à éditer (ou créer) ~/.ssh/config et à activer l'option UseKeychain.

Host *
    UseKeychain yes

Connexes: macOS ne cesse de demander mon mot de passe ssh depuis la mise à jour de Sierra

202
Kyle Clegg

Si vous avez essayé ssh-add et que vous êtes toujours invité à entrer votre phrase secrète, essayez d'utiliser ssh-add -K. Cela ajoute votre phrase secrète à votre trousseau.

Mise à jour: si vous utilisez macOS Sierra, vous devrez probablement effectuer une autre étape, car ce qui précède risque de ne plus fonctionner. Ajoutez ce qui suit à votre ~/.ssh/config:

Host *
  UseKeychain yes
57
Darryl Young

Je voudrais essayer ce qui suit:

  1. Démarrer GitBash
  2. Editez votre fichier ~/.bashrc
  3. Ajouter les lignes suivantes au fichier
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
  1. Enregistrez et fermez le fichier
  2. Fermer GitBash
  3. Rouvrir GitBash
  4. Entrez votre phrase secrète
49
Roland

Ce qui a fonctionné pour moi sur Windows était (j'avais cloné le code à partir d'un 1er repo):

eval $(ssh-agent)
ssh-add 
git pull 

à quel moment il m'a demandé une dernière fois pour ma phrase secrète

Crédits: la solution provient de https://unix.stackexchange.com/questions/12195/how-to-avoid-being-asked-passphrase-each-time-i-Push-to-bitbucket =

20
Arthur

Essayez d’ajouter ceci à votre ~/.ssh/config:

Host * AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_rsa

... en supposant que votre clé privée s'appelle id_rsa

19
IgorGanapolsky

J'ai eu un problème similaire, mais les autres réponses n'ont pas résolu mon problème. Je pensais aller de l'avant et poster ceci juste au cas où quelqu'un d'autre aurait une configuration délirante comme moi.

Il s'est avéré que j'avais plusieurs clés et que Git utilisait d'abord la mauvaise. Cela me demanderait ma phrase secrète, et j'y entrerais, puis Git utiliserait une clé différente qui fonctionnerait (pour laquelle je n'avais pas besoin d'entrer la phrase secrète).

Je viens de supprimer la clé qu'il utilisait pour me demander une phrase secrète et maintenant cela fonctionne!

6
11101101b

Il semble que vous ayez peut-être 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 la fermez, vous devrez entrer le mot de passe à nouveau lorsque vous le rouvrez.

5
Jeff Welling

Si les solutions ci-dessus ne fonctionnent pas pour moi, une chose à vérifier est que vous avez également la clé publique (généralement id_rsa.pub). C'est inhabituel, mais c'était la cause pour moi.

Pour créer votre clé publique à partir de votre clé privée:

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
4
Stephen Harris

J'essaie différentes solutions mais rien n'y fait. Mais cette procédure ( Mon environnement SSH GitBash demande toujours ma phrase secrète, que puis-je faire? ) à partir de Bitbucket.com fonctionne bien:

L'idée est:

  1. vous créez le fichier ~/.bashrc

  2. ajouter le script suivant:

    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. relancez Bash

1
alx lark