web-dev-qa-db-fra.com

Git Bash: Impossible d'ouvrir une connexion à votre agent d'authentification

Je suis nouveau dans Github et Générer des clés SSH est une nécessité. Et a été informé par mon patron à ce sujet, donc je dois me conformer.

J'ai réussi à créer la clé SSH mais quand je vais l'ajouter à ssh-agent

c'est ce qui se passe

Quel semble être le problème?

enter image description here

79
leipz

Il semble que vous ayez besoin d’exécuter ssh-agent avant de l’utiliser:

eval `ssh-agent -s`

Cette question a reçu une réponse dans cette rubrique: Impossible d'établir une connexion avec votre agent d'authentification

142
Kritana

J'ai vérifié toutes les solutions de ce message et du message que @kenorb a référencé ci-dessus, et je n'ai trouvé aucune solution qui ait fonctionné pour moi.

J'utilise Git 1.9.5 Preview sous Windows 7 avec la configuration suivante: - Exécuter Git à partir de l'invite de commande Windows - Extraire les fins de ligne de style Windows, commettre de style Unix

J'ai utilisé la console 'Git Bash' pour tout ... Et tout allait bien jusqu'à ce que j'essaye d'installer les clés SSH . La documentation de GitHub indique ce qui suit (n'exécutez pas ces commandes avant d'avoir lu le message) :

Assurez-vous que ssh-agent est activé:

Si vous utilisez Git Bash, activez ssh-agent:
# start the ssh-agent in the background
ssh-agent -s
# Agent pid 59566
Si vous utilisez une autre invite de terminal, telle que msysgit, activez ssh-agent:
# start the ssh-agent in the background
eval $(ssh-agent -s)
# Agent pid 59566

Maintenant, bien sûr, j'ai raté le fait que vous étiez censé faire l'un ou l'autre. J'ai donc exécuté ces commandes plusieurs fois parce que la dernière commande ssh-add échouait. Je suis donc retournée à cette étape et ai continué à réessayer encore et encore.

Il en résulte qu'un processus 'ssh-agent' Windows est créé chaque fois que vous exécutez ces commandes (vous remarquez le nouveau PID chaque fois que vous entrez ces commandes?)

Ainsi, Ctrl + Alt + Del et appuyez sur End Process pour arrêter chaque processus 'ssh-agent.exe'.

Maintenant que tous les problèmes des tentatives infructueuses sont nettoyés, je vais vous expliquer comment le faire fonctionner ...

Dans 'Git Bash':

Démarrer le processus 'ssh-agent.exe'

eval $(ssh-agent -s)

Et installez les clés SSH

ssh-add "C:\Users\MyName\.ssh\id_rsa"

* Ajustez le chemin ci-dessus avec votre nom d'utilisateur et assurez-vous que l'emplacement du répertoire */. Ssh est Je pense que vous avez choisi cet emplacement lors de l'installation de Git? Peut-être pas ...

La partie que je faisais mal avant de comprendre cela était que je n'utilisais pas de guillemets autour de l'emplacement 'ssh-add'. Ce qui précède explique comment il doit être saisi sous Windows.

40
derekmx271

Sous Windows, vous pouvez utiliser Exécuter avec l’une des commandes ci-dessous.

Pour 32 bits:

"C:\Fichiers de programme (x86)\Git\cmd\start-ssh-agent.cmd"

Pour 64 bits:

"C:\Program Files\Git\cmd\start-ssh-agent.cmd"

20
Jhourlad Estrella

Situation: Application MVS2017 - Utilisation de 'Git Bash' sous Windows 10 - Tentative de connexion à un référentiel BitBucket.

Pour être clair, lorsque vous installez Git pour Windows ( https://git-scm.com/download/win ), il est livré avec un utilitaire appelé Git Bash.

enter image description here

Donc, je suis dans 'Git Bash', comme suit:

Mike@DUBLIN MINGW64 ~/source/repos/DoubleIrish (master)
$ git remote add Origin [email protected]:Guiness/DoubleIrish.git
$ git remote -v
Origin  [email protected]:Guiness/DoubleIrish.git (fetch)
Origin  [email protected]:Guiness/DoubleIrish.git (Push)
Mike@DUBLIN MINGW64 ~/source/repos/DoubleIrish (master)
$ git Push -u Origin master
[...]
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.

La clé privée est-elle configurée?

$ ssh -V
OpenSSH_7.7p1, OpenSSL 1.0.2p  14 Aug 2018
$ ls -a ~/.ssh
./  ../  known_hosts

Je peux voir que, à ce stade, mon fichier de clé privée (id_rsa) est manquant. Je l’ajoute donc: (note: générer une paire de clés public-privé n’entre pas dans le cadre de ma réponse, mais je peux dire que sous Linux, vous pouvez utiliser ssh-keygen pour cela.)

$ ls -a ~/.ssh
./  ../  id_rsa  known_hosts

OK, continuons:

$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-KhQwFLAgWGYC/agent.18320; export SSH_AUTH_SOCK;
SSH_AGENT_PID=17996; export SSH_AGENT_PID;
echo Agent pid 17996;

$ ssh-add ~/.ssh/id_rsa
Could not open a connection to your authentication agent.

Pour résoudre cela, je lance:

$ ssh-agent bash

Et puis encore:

$ ssh-add ~/.ssh/id_rsa
Identity added: /c/Users/Mike.CORP/.ssh/id_rsa (/c/Users/Mike.CORP/.ssh/id_rsa)

Cela a fonctionné pour moi. J'espère que cela t'aides

7
Varus Septimus

Je voudrais améliorer la réponse acceptée

Inconvénients de l'utilisation de .bashrc avec eval ssh-agent -s:

  1. Chaque git-bash aura son propre processus ssh-agent.exe
  2. La clé SSH doit être ajoutée manuellement à chaque fois que vous ouvrez git-bash

Voici mon .bashrc qui va éradiquer les inconvénients ci-dessus

Mettez ce .bashrc dans votre répertoire personnel (Windows 10: C:\Users\[username]\.bashrc) et il sera exécuté à chaque fois qu'un nouveau git-bash est ouvert et que ssh-add travaillera comme citoyen de première classe.

Lisez les #comments pour comprendre comment cela fonctionne.

# Env vars used
# SSH_AUTH_SOCK - ssh-agent socket, should be set for ssh-add or git to be able to connect
# SSH_AGENT_PID - ssh-agent process id, should be set in order to check that it is running
# SSH_AGENT_ENV - env file path to share variable between instances of git-bash
SSH_AGENT_ENV=~/ssh-agent.env
# import env file and supress error message if it does not exist
. $SSH_AGENT_ENV 2> /dev/null

# if we know that ssh-agent was launched before ($SSH_AGENT_PID is set) and process with that pid is running 
if [ -n "$SSH_AGENT_PID" ] && ps -p $SSH_AGENT_PID > /dev/null 
then
  # we don't need to do anything, ssh-add and git will properly connect since we've imported env variables required
  echo "Connected to ssh-agent"
else   
  # start ssh-agent and save required vars for sharing in $SSH_AGENT_ENV file
  eval $(ssh-agent) > /dev/null
  echo export SSH_AUTH_SOCK=\"$SSH_AUTH_SOCK\" > $SSH_AGENT_ENV
  echo export SSH_AGENT_PID=$SSH_AGENT_PID >> $SSH_AGENT_ENV
  echo "Started ssh-agent"
fi

Ce script utilise également un petit truc pour vous assurer que les variables d'environnement fournies sont partagées entre les instances de git-bash en les enregistrant dans un fichier .env.

2
Mihail Ignatiev

Je me débattais aussi avec le problème.

Après avoir tapé $ eval 'ssh-agent -s' suivi de $ ssh-add ~/.ssh/id_rsa

Je me suis plaint le même: "Impossible d'ouvrir une connexion à votre agent d'authentification". Ensuite, je réalise qu’il existe deux types de citation différents sur le clavier de mon ordinateur. J'ai donc essayé celui qui se trouve à la même position que "~": $ eval ssh-agent -s $ ssh-add ~/.ssh/id_rsa

Et ça a fonctionné.

2
Avi