Impossible d'ouvrir une connexion à votre agent d'authentification

je tombe sur cette erreur de:

$ git push heroku master
Warning: Permanently added the RSA host key for IP address '50.19.85.132' to the list of known hosts.
!  Your key with fingerprint b7:fd:15:25:02:8e:5f:06:4f:1c:af:f3:f0:c3:c2:65 is not authorized to access bitstarter.

j'ai essayé d'ajouter les clés et j'ai cette erreur ci-dessous:

$ ssh-add ~/.ssh/id_rsa.pub
Could not open a connection to your authentication agent.
1220
demandé sur Danny Dai Smith 2013-07-25 03:26:10

30 réponses

Avez-Vous Commencé ssh-agent ?

vous pourriez avoir besoin de démarrer ssh-agent avant d'exécuter la commande ssh-add :

eval `ssh-agent -s`
ssh-add

notez que ceci démarrera l'agent pour msysgit Bash sur Windows . Si vous utilisez un autre shell ou système d'exploitation, vous pourriez avoir besoin d'utiliser une variante de la commande, comme ceux énumérés dans le autres réponses .

voir les réponses suivantes:

  1. ssh-add se plaint: impossible d'ouvrir une connexion à votre agent d'authentification
  2. Git push requiert le nom d'utilisateur et le mot de passe (contient des instructions détaillées sur la façon d'utiliser ssh-agent)
  3. Comment faire pour exécuter (git/ssh), l'authentification de l'agent? .
  4. ne pouvait pas ouvrir une connexion à votre agent d'authentification

pour démarrer automatiquement ssh-agent et permettre à une seule instance de fonctionner dans plusieurs fenêtres de console, voir Démarrer ssh-agent lors de la connexion .

Pourquoi utiliser eval au lieu de ssh-agent ?

Pour savoir pourquoi, consultez la section Robin Green réponse .

Public vs Privé Touches

aussi, chaque fois que j'utilise ssh-add , j'ajoute toujours des clés privées. Le fichier ~/.ssh/id_rsa.pub ressemble à une clé publique, Je ne suis pas sûr que cela fonctionnera. Vous avez un dossier ~/.ssh/id_rsa ? Si vous l'ouvrez dans un éditeur de texte, ça veut dire que c'est une clé privée?

1879
répondu Community 2017-05-23 12:26:34

j'ai essayé les autres solutions en vain. J'ai fait plus de recherches et découvert que la commande suivante travaillé. J'utilise Windows 7 et Git Bash .

eval $(ssh-agent)

plus d'informations dans: https://coderwall.com/p/rdi_wq

455
répondu Victor Alves 2014-05-09 04:57:11

la commande suivante a fonctionné pour moi. J'utilise CentOS.

exec ssh-agent bash
224
répondu mianjee 2013-12-09 23:26:01

MsysGit or Cygwin

si vous utilisez Msysgit ou Cygwin vous pouvez trouver un bon tutoriel à ssh-Agent dans msysgit et cygwin et bash :

  1. ajoutez un fichier appelé .bashrc à votre dossier personnel.

  2. ouvrir le fichier et coller dans:

    #!/bin/bash
    eval `ssh-agent -s`
    ssh-add
    
  3. cela suppose que votre clé est dans le emplacement conventionnel ~/.ssh/id_rsa . Si ce n'est pas le cas, incluez un chemin complet après la commande ssh-add .

  4. ajouter ou créer le fichier ~/.ssh/config avec le contenu

    ForwardAgent yes
    

    dans le tutoriel original le ForwardAgent param est Yes , mais c'est une faute de frappe. Utilisez toutes les minuscules ou vous obtiendrez des erreurs.

  5. Redémarrez Msysgit. Il vous demandera d'entrer votre mot de passe une fois, et c'est tout (jusqu'à ce que vous terminiez la session, ou que votre agent ssh soit tué.)

Mac / OS X

si vous ne voulez pas démarrer un nouvel agent ssh chaque fois que vous ouvrez un terminal, vérifiez Porte-clés . Je suis sur un Mac maintenant, donc j'ai utilisé le tutoriel ssh-agent avec zsh & keychain sur Mac OS X pour mettre en place, mais je suis sûr qu'une recherche Google aura beaucoup de info Pour Windows.

mise à jour : une meilleure solution sur Mac est d'ajouter votre clé pour le porte-clés Mac OS:

ssh-add -K ~/.ssh/id_rsa

aussi Simple que ça.

192
répondu RobW 2014-05-25 00:43:26

ne pouvait pas ouvrir une connexion à votre agent d'authentification

pour corriger cette erreur:

bash:

$ eval `ssh-agent -s`

tcsh:

$ eval `ssh-agent -c`

alors utilisez ssh-add comme vous le feriez normalement.


Astuce:

j'oubliais toujours quoi taper pour les commandes ssh-agent ci-dessus, donc je j'ai créé un alias dans mon fichier .bashrc comme ceci:

alias ssh-agent-cyg='eval `ssh-agent -s`'

maintenant au lieu d'utiliser ssh-agent , je peux utiliser ssh-agent-cyg

E. G.

$ ssh-agent-cyg
SSH_AUTH_SOCK=/tmp/ssh-n16KsxjuTMiM/agent.32394; export SSH_AUTH_SOCK;
SSH_AGENT_PID=32395; export SSH_AGENT_PID;
echo Agent pid 32395;
$ ssh-add ~/.ssh/my_pk

Source Originale de corriger:

http://cygwin.com/ml/cygwin/2011-10/msg00313.html

177
répondu Chris Snow 2015-09-13 08:32:43

J'ai fait face au même problème pour Linux, et voici ce que j'ai fait:

fondamentalement, la commande ssh-agent démarre l'agent, mais elle ne définit pas vraiment les variables d'environnement pour qu'il tourne. Il affiche juste ces variables dans le shell.

Vous avez besoin de:

eval `ssh-agent`

et ensuite do ssh-add. Voir ne pouvait pas ouvrir une connexion à votre agent d'authentification .

106
répondu n3o 2015-02-02 22:04:08

ssh-add et ssh (en supposant que vous utilisez le openssh implémentations) nécessitent une variable d'environnement pour savoir comment parler à l'agent ssh. Si vous avez démarré l'agent dans une fenêtre d'invite de commande différente de celle que vous utilisez maintenant, ou si vous l'avez démarré incorrectement, ni ssh-add ni ssh ne verront que la variable d'environnement est définie (parce que la variable d'environnement est définie localement à l'invite de commande dans laquelle elle est définie).

vous ne dites pas qui version de SSH que vous utilisez, mais si vous utilisez cygwin's, vous pouvez utiliser cette recette de Agent ssh sur Cygwin :

# Add to your Bash config file
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
    eval `$SSHAGENT $SSHAGENTARGS`
    trap "kill $SSH_AGENT_PID" 0
fi

cela lancera automatiquement un agent pour chaque fenêtre d'invite de commande que vous ouvrez (ce qui est sous-optimal si vous ouvrez plusieurs invites de commande en une seule session, mais au moins cela devrait fonctionner).

95
répondu Robin Green 2014-05-25 00:32:14

Essayez les étapes suivantes:

1) Ouvrir Git Bash et de lancer: cd ~/.ssh

2) Essayer d'exécuter agent: eval $(ssh-agent)

3) en ce moment, vous pouvez exécuter la commande suivante: ssh-add -l

88
répondu ChechoroArtem 2014-11-10 08:54:58

dans Windows 10 j'ai essayé toutes les réponses énumérées ici, mais aucune ne semblait fonctionner. En fait, ils donnent un indice. Pour résoudre un problème, vous avez simplement besoin de 3 commandes. l'idée de ce problème est que ssh-add a besoin des variables d'environnement SSH_AUTH_SOCK et SSH_AGENT_PID pour être défini avec le chemin courant du fichier de chaussettes ssh-agent et le numéro de pid.

ssh-agent -s > temp.txt

permet d'enregistrer la sortie de ssh-agent dans le fichier. Fichier texte contenu sera quelque chose comme ceci:

SSH_AUTH_SOCK=/tmp/ssh-kjmxRb2764/agent.2764; export SSH_AUTH_SOCK;
SSH_AGENT_PID=3044; export SSH_AGENT_PID;
echo Agent pid 3044;

copier quelque chose comme "/tmp/ssh-kjmxRb2764/agent.2764" à partir du texte de fichiers et d'exécuter la commande suivante directement dans la console:

set SSH_AUTH_SOCK=/tmp/ssh-kjmxRb2764/agent.2764

copier quelque chose comme "3044" à partir du fichier texte et exécuter la commande suivante directement dans la console:

set SSH_AGENT_PID=3044

maintenant que les variables d'environnement (SSH_AUTH_SOCK et SSH_AGENT_PID) sont définies pour la session courante de la console, lancez votre commande ssh-add et il ne manquera plus de connecter ssh agent.

45
répondu BIOHAZARD 2015-06-21 16:44:21

au Lieu d'utiliser $ ssh-agent -s , j'ai utilisé $ eval `ssh-agent -s` pour résoudre ce problème.

voici ce que j'ai réalisé étape par étape (Étape 2 à partir de GitBash):

  1. nettoyé mon .dossier ssh à C:\user\<username>\.ssh\
  2. a généré une nouvelle clé SSH

    $ ssh-keygen -t rsa -b 4096 -C "xyz@abc.com"
  3. vérifiez si un identifiant de processus(agent ssh) est déjà en cours d'exécution.

    $ ps aux | grep ssh
  4. (facultatif) si vous en trouvez à l'étape 3, tuez les

    $ kill <pids>
  5. a commencé l'agent ssh

    $ eval `ssh-agent -s`
  6. a ajouté la clé SSH générée à l'étape 2 à l'agent ssh

    $ ssh-add ~/.ssh/id_rsa
44
répondu vinsinraw 2018-08-10 12:56:13

une chose que je suis tombé sur était que eval n'a pas fonctionné pour moi en utilisant Cygwin, ce qui a fonctionné pour moi était ssh-agent ssh-add id_rsa .

après que j'ai rencontré un problème que ma clé privée était trop ouverte, la solution que j'ai réussi à trouver pour cela (de ici ):

chgrp Users id_rsa

ainsi que

chmod 600 id_rsa

enfin, j'ai pu utiliser:

ssh-agent ssh-add id_rsa
25
répondu Vnge 2014-06-05 14:46:56

pour amplifier la réponse de N3O Pour Windows 7...

mon problème était en effet que certaines variables d'environnement requises n'étaient pas définies, et n3o a raison de dire que ssh-agent vous dit comment définir ces variables d'environnement, mais ne les définit pas réellement.

depuis Windows ne vous laisse pas faire "eval," voici ce qu'il faut faire à la place:

rediriger la sortie de ssh-agent vers un fichier batch avec

ssh-agent > temp.bat

maintenant utilisez un éditeur de texte tel que Notepad pour éditer temp.chauve. Pour chacune des deux premières lignes: - Insérer le mot "jeu" et un espace au début de la ligne. - Supprimer le premier point-virgule et tout ce qui suit.

supprimer la troisième ligne. Votre temp.bat devrait ressembler à quelque chose comme ceci:

set SSH_AUTH_SOCK=/tmp/ssh-EorQv10636/agent.10636
set SSH_AGENT_PID=8608

Exécuter en temp.chauve. Ceci permettra de définir les variables d'environnement qui sont nécessaires pour ssh-add de travail.

24
répondu Steve Saporta 2013-12-19 14:57:13

je viens de faire marcher ça. Ouvrez votre fichier ~/.ssh/config .

ajouter ce qui suit -

Host github.com
 IdentityFile ~/.ssh/github_rsa

La page qui m'a donné l'astuce configurer SSH pour Git dit que l'indentation de l'espace unique est importante... bien que J'ai eu une configuration ici D'Heroku qui n'avait pas cet espace et fonctionne correctement.

14
répondu Paul Becotte 2014-02-25 04:45:44

Si vous suivez ces instructions, votre problème sera résolu.

si vous êtes sur une machine Mac ou Linux, tapez:

eval "$(ssh-agent -s)"

si vous êtes sur une machine Windows, tapez:

ssh-agent -s
14
répondu Fahim Boron 2014-11-08 13:40:10

Note: ceci est une réponse à cette question , qui a été fusionnée avec celle-ci. Cette question était pour Windows 7, ce qui signifie que ma réponse était pour Cygwin/MSYS/MSYS2. Celui-ci semble pour un certain unix, où je ne m'attendrais pas à ce que l'agent SSH ait besoin d'être géré comme ça.

cela exécutera l'agent SSH et authentifiera seulement la première fois que vous avez besoin c'est , pas à chaque fois que vous ouvrez votre terminal Bash. Il peut être utilisé pour n'importe quel programme utilisant SSH en général, y compris SSH lui-même et scp. Il suffit d'ajouter ceci à /etc/profile.d/ssh-helper.sh :

ssh-auth() {
    # Start the SSH agent only if not running
    [[ -z $(ps | grep ssh-agent) ]] && echo $(ssh-agent) > /tmp/ssh-agent-data.sh

    # Identify the running SSH agent
    [[ -z $SSH_AGENT_PID ]] && source /tmp/ssh-agent-data.sh > /dev/null

    # Authenticate (change key path or make a symlink if needed)
    [[ -z $(ssh-add -l | grep "/home/$(whoami)/.ssh/id_rsa") ]] && ssh-add
}

# You can repeat this for other commands using SSH
git() { ssh-auth; command git "$@"; }
9
répondu Renato Silva 2018-01-23 17:02:41

utiliser le paramètre - A Lorsque vous vous connectez au serveur, exemple:

ssh -A root@myhost

de l'homme page :

-A Enables forwarding of the authentication agent connection.  
   This can also be specified on a per-host basis in a configuration file.

   Agent forwarding should be enabled with caution.  Users with the ability to bypass file permissions on the remote host (for the agent's
   UNIX-domain socket) can access the local agent through the forwarded 
   connection.  An attacker cannot obtain key material from the agent,
   however they can perform operations on the keys that enable them to
   authenticate using the identities loaded into the agent.
5
répondu Lebnik 2017-07-19 19:13:19

la solution de base pour exécuter ssh-agent est répondu dans de nombreuses réponses. Cependant, exécuter ssh-agent plusieurs fois (pour chaque terminal ouvert ou par connexion à distance) créera un grand nombre de copies de ssh-agent courant en mémoire. Les scripts qui sont suggérés pour éviter ce problème est long et ont besoin d'écrire et/ou de copier le fichier séparé ou ont besoin d'écrire trop de chaînes dans ~/.profile ou ~/.schrc . Permettez-moi de suggérer solution simple à deux cordes:

pour sh , bash , etc:

# ~/.profile
if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -s > ~/.ssh-agent.sh; fi
. ~/.ssh-agent.sh

pour csh , tcsh , etc:

# ~/.schrc
sh -c 'if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -c > ~/.ssh-agent.tcsh; fi'
eval `cat ~/.ssh-agent.tcsh`

Ce qui est ici:

  • rechercher le processus ssh-agent par nom et par utilisateur courant
  • créer le fichier de script shell approprié en appelant ssh-agent et lancer ssh-agent lui-même si non utilisateur actuel ssh-agent processus trouvé
  • évaluer créé script shell qui configurer un environnement approprié

il n'est pas nécessaire de protéger le script shell créé ~/.ssh-agent.tcsh ou ~/.ssh-agent.sh d'un autre utilisateur parce que: la première communication avec ssh-agent est traitée par une socket protégée qui n'est pas accessible à un autre utilisateur, et à la seconde un autre utilisateur peut trouver ssh-agent socket simple par fichiers d'énumération dans le répertoire /tmp/ . En ce qui concerne l'accès au processus ssh-agent , c'est la même chose.

5
répondu oklas 2018-01-10 23:03:37

essayez ce qui suit:

ssh-agent sh -c 'ssh-add && git push heroku master'
4
répondu kenorb 2015-03-26 21:13:48

j'ai eu ce problème, quand j'ai commencé ssh-agent, quand il était déjà en cours d'exécution. Devient confus. Pour voir si c'est le cas, utiliser

eval $(ssh-agent)

pour voir si c'est la même chose que ce que vous avez pensé qu'il devrait être. Dans mon cas, c'était différent de celui que je viens de commencer.

Pour vérifier si vous avez plus d'un ssh-agent en cours d'exécution, vous pouvez consulter:

ps -ef | grep ssh
3
répondu Jahmic 2014-07-04 21:40:47

j'ai eu un problème similaire quand j'ai essayé d'obtenir que cela fonctionne sur Windows pour se connecter à ranger via ssh

Voici la solution qui a fonctionné pour moi.

  1. il S'avère que je dirigeais le concours agent ssh sur ma fenêtre - je vérifierais ce que vous dirigez. Je soupçonne Qu'il est concours car il vient comme défaut avec Putty et winScp

  2. le ssh-add ne fonctionne pas depuis la ligne de commande avec ce type d'agent

  3. vous devez ajouter la clé privée via la fenêtre pageant UI que vous pouvez obtenir en doublant l'icône Pageant dans la barre des tâches (une fois qu'il est lancé).

  4. avant d'ajouter la clé du concours, vous devez la convertir au format PPK. Des instructions complètes sont disponibles ici comment convertir la clé SSH au format ppk

  5. Qui est-il. Une fois que j'ai chargé ma clé dans stash, J'ai pu utiliser SourceTree pour créer un repo local et cloner la télécommande.

Espérons que cette aide...

3
répondu Moonwalker 2014-11-17 14:14:01

Lire @ "cupcake" réponse pour les explications. Ici, j'ai seulement essayer d'automatiser la correction.

si vous utilisez Cygwin terminal avec BASH, ajoutez ce qui suit à $HOME/.dossier bashrc. Cela ne démarre ssh-agent qu'une fois dans le premier terminal Bash et ajoute les clés à ssh-agent. (Je ne sais pas si C'est nécessaire sur Linux)

###########################
# start ssh-agent for
# ssh authentication with github.com
###########################
SSH_AUTH_SOCK_FILE=/tmp/SSH_AUTH_SOCK.sh
if [ ! -e $SSH_AUTH_SOCK_FILE ]; then
    # need to find SSH_AUTH_SOCK again.
    # restarting is an easy option
    pkill ssh-agent
fi
# check if already running
SSH_AGENT_PID=`pgrep ssh-agent`
if [ "x$SSH_AGENT_PID" == "x" ]; then
#   echo "not running. starting"
    eval $(ssh-agent -s) > /dev/null
    rm -f $SSH_AUTH_SOCK_FILE
    echo "export SSH_AUTH_SOCK=$SSH_AUTH_SOCK" > $SSH_AUTH_SOCK_FILE
    ssh-add $HOME/.ssh/github.com_id_rsa 2>&1 > /dev/null
#else
#   echo "already running"
fi
source $SSH_AUTH_SOCK_FILE

N'oubliez pas d'ajouter vos bonnes touches dans la commande" ssh-add".

3
répondu Kiran Mohan 2017-05-23 10:31:38

j'ai résolu l'erreur en arrêtant de force (tué) les processus git (agent ssh), puis en désinstallant git, puis en installant à nouveau git.

2
répondu Devendra Singh 2014-04-19 19:02:26

si vous utilisez Putty, peut-être que vous devez définir l'option" connexion/SSH/Auth/Allow agent forwarding "à"true".

enter image description here

2
répondu Vladius 2015-01-20 21:34:10

Ce travaillé pour moi.

dans la fenêtre CMD, tapez la commande suivante:

cd path-to-Git/bin # (for example,cd C:\Program Files\Git\bin)
bash
exec ssh-agent bash
ssh-add path/to/.ssh/id_rsa
2
répondu kecco 2015-03-26 21:11:01

utilisant Git Bash sur Win8.1E, ma résolution était la suivante:

eval $(ssh-agent) > /dev/null
ssh-add ~/.ssh/id_rsa
1
répondu SrBlanco 2014-07-04 21:41:09

pour bash construit dans Windows 10, Je l'ai ajouté à .bash_profile:

if [ -z $SSH_AUTH_SOCK ]; then
    if [ -r ~/.ssh/env ]; then
            source ~/.ssh/env
            if [ `ps -p $SSH_AGENT_PID | wc -l` = 1 ]; then
                    rm ~/.ssh/env
                    unset SSH_AUTH_SOCK
            fi
    fi
fi

if [ -z $SSH_AUTH_SOCK ]; then
    ssh-agent -s | sed 's/^echo/#echo/'> ~/.ssh/env
    chmod 600 ~/.ssh/env
    source ~/.ssh/env > /dev/null 2>&1
fi
1
répondu Kip 2016-04-26 17:13:31

dans mon cas, mon pare-feu Comodo avait sablé l'agent ssh. Une fois le bac à sable désactivé, j'ai pu cloner le dépôt.

POUR INFO, J'utilise un pare-feu Comodo sur Windows 7.

0
répondu neoramos 2014-05-09 04:53:08

Même j'ai été faire "impossible d'ouvrir une connexion à votre agent d'authentification."lors de l'exécution de la commande tout en générant et en ajoutant la touche SSH: ssh-add ~/.ssh/id_rsa . Je l'ai résolu en arrêtant les multiples ssh-agent instances en cours d'exécution sur ma machine, puis désinstallé le Git à partir du panneau de configuration sur ma machine windows, puis à nouveau installé Git et les choses fonctionnaient maintenant.

0
répondu Devendra Singh 2014-07-07 02:46:46

vérifie aussi l'url distante. utilisez git@github... au lieu de https: / / proptocol

voir https://stackoverflow.com/a/33928364/551811

0
répondu BraveNewMath 2017-05-23 12:02:59