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.
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:
- ssh-add se plaint: impossible d'ouvrir une connexion à votre agent d'authentification
- 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)
- Comment faire pour exécuter (git/ssh), l'authentification de l'agent? .
- 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?
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
la commande suivante a fonctionné pour moi. J'utilise CentOS.
exec ssh-agent bash
MsysGit or Cygwin
si vous utilisez Msysgit ou Cygwin vous pouvez trouver un bon tutoriel à ssh-Agent dans msysgit et cygwin et bash :
-
ajoutez un fichier appelé
.bashrc
à votre dossier personnel. -
ouvrir le fichier et coller dans:
#!/bin/bash eval `ssh-agent -s` ssh-add
-
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 commandessh-add
. -
ajouter ou créer le fichier
~/.ssh/config
avec le contenuForwardAgent yes
dans le tutoriel original le
ForwardAgent
param estYes
, mais c'est une faute de frappe. Utilisez toutes les minuscules ou vous obtiendrez des erreurs. -
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.
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:
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 .
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).
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
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.
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):
- nettoyé mon .dossier ssh à
C:\user\<username>\.ssh\
- a généré une nouvelle clé SSH
$ ssh-keygen -t rsa -b 4096 -C "xyz@abc.com"
- vérifiez si un identifiant de processus(agent ssh) est déjà en cours d'exécution.
$ ps aux | grep ssh
- (facultatif) si vous en trouvez à l'étape 3, tuez les
$ kill <pids>
- a commencé l'agent ssh
$ eval `ssh-agent -s`
- a ajouté la clé SSH générée à l'étape 2 à l'agent ssh
$ ssh-add ~/.ssh/id_rsa
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
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.
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.
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
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 "$@"; }
Permettez-moi d'offrir une autre solution. Si vous venez d'installer Git 1.8.2.2 ou aux alentours, et que vous voulez activer SSH, suivez les instructions bien écrites 151970920".
tout au long de l'étape 5.6 où vous pourriez rencontrer un léger accroc. Si un agent SSH est déjà en cours d'exécution, vous pouvez obtenir le message d'erreur suivant lorsque vous redémarrez bash
Could not open a connection to your authentication agent
Si vous le faites, utilisez la commande suivante pour voir si plus d'un processus ssh-agent est en cours d'exécution
ps aux | grep ssh
Si vous voyez plus d'un ssh-agent de service, vous devrez tuer tous ces processus. Utilisez la commande kill comme suit (le PID sera unique sur votre ordinateur)
kill <PID>
exemple:
kill 1074
après avoir supprimé tous les processus ssh-agent, exécutez la commande px aux | grep ssh encore une fois pour être sûr qu'ils ont disparu, puis redémarrez Bash.
Voilà, vous devriez maintenant obtenir quelque chose comme ceci:
Initializing new SSH agent...
succeeded
Enter passphrase for /c/Users/username/.ssh/id_rsa:
maintenant vous pouvez continuer sur l'étape 5.7 et au-delà.
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.
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 lancerssh-agent
lui-même si non utilisateur actuelssh-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.
essayez ce qui suit:
ssh-agent sh -c 'ssh-add && git push heroku master'
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
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.
-
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
-
le ssh-add ne fonctionne pas depuis la ligne de commande avec ce type d'agent
-
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é).
-
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
-
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...
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".
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.
si vous utilisez Putty, peut-être que vous devez définir l'option" connexion/SSH/Auth/Allow agent forwarding "à"true".
utilisant Git Bash sur Win8.1E, ma résolution était la suivante:
eval $(ssh-agent) > /dev/null
ssh-add ~/.ssh/id_rsa
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
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.
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.
vérifie aussi l'url distante. utilisez git@github... au lieu de https: / / proptocol