desarrollo-web-br-bd.com

No se pudo abrir una conexión a su agente de autenticación

Estoy corriendo en este error 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.

Intenté agregar las claves y obtengo el siguiente error:

$ ssh-add ~/.ssh/id_rsa.pub
Could not open a connection to your authentication agent.
1354
Danny Dai Smith

¿Comenzaste ssh-agent?

Es posible que deba iniciar ssh-agent antes de ejecutar el comando ssh-add:

eval `ssh-agent -s`
ssh-add

Tenga en cuenta que esto iniciará el agente para msysgit Bash en Windows . Si está utilizando un Shell o sistema operativo diferente, es posible que deba usar una variante del comando, como las que se enumeran en el otras respuestas .

Vea las siguientes respuestas:

  1. ssh-add se queja: no se pudo abrir una conexión con su agente de autenticación
  2. Git Push requiere nombre de usuario y contraseña (contiene instrucciones detalladas sobre cómo usar ssh-agent)
  3. ¿Cómo ejecutar (git/ssh) el agente de autenticación? .
  4. No se pudo abrir una conexión con su agente de autenticación

Para iniciar automáticamente ssh-agent y permitir que una sola instancia funcione en múltiples ventanas de consola, vea Iniciar ssh-agent al iniciar sesión .

¿Por qué necesitamos usar eval en lugar de solo ssh-agent?

Para saber por qué, vea respuesta de Robin Green .

Claves públicas vs privadas

Además, siempre que uso ssh-add, siempre le agrego claves privadas. El archivo ~/.ssh/id_rsa.pub parece una clave pública, no estoy seguro de si funcionará. ¿Tienes un archivo ~/.ssh/id_rsa? Si lo abres en un editor de texto, ¿dice que es una clave privada?

2057
user456814

Probé las otras soluciones en vano. Hice más investigación y encontré que el siguiente comando funcionó. Estoy usando Windows 7 y Git Bash .

eval $(ssh-agent)

Más información en: https://coderwall.com/p/rdi_wq

490
Victor Alves

El siguiente comando funcionó para mí. Estoy usando CentOS.

exec ssh-agent bash
239
mianjee

MsysGit o Cygwin

Si está utilizando Msysgit o Cygwin, puede encontrar un buen tutorial en SSH-Agent en msysgit y cygwin y bash :

  1. Agregue un archivo llamado .bashrc a su carpeta de inicio.

  2. Abre el archivo y pégalo en:

    #!/bin/bash
    eval `ssh-agent -s`
    ssh-add
    
  3. Esto supone que su clave está en la ubicación ~/.ssh/id_rsa convencional. Si no lo está, incluya una ruta completa después del comando ssh-add.

  4. Agregar o crear el archivo ~/.ssh/config con el contenido

    ForwardAgent yes
    

    En el tutorial original, el parámetro ForwardAgent es Yes, pero es un error tipográfico. Usa todas las minúsculas o obtendrás errores.

  5. Reinicie Msysgit. Le pedirá que ingrese su contraseña una vez, y eso es todo (hasta que finalice la sesión, o su agente ssh sea asesinado).

Mac OS X

Si no desea iniciar un nuevo ssh-agent cada vez que abra un terminal, consulte Llavero . Estoy en una Mac ahora, así que utilicé el tutorial ssh-agent con zsh y llavero en Mac OS X para configurarlo, pero estoy seguro de que la búsqueda de Google tendrá un montón de informacion para windows.

Actualizar : una mejor solución para Mac es agregar su clave al llavero de Mac OS:

ssh-add -K ~/.ssh/id_rsa

Simple como eso.

199
RobW

No se pudo abrir una conexión a su agente de autenticación

Para resolver este error:

golpetazo:

$ eval `ssh-agent -s`

tcsh:

$ eval `ssh-agent -c`

Luego use ssh-add como lo haría normalmente.


Consejo:

Siempre olvidé qué escribir para los comandos de ssh-agent anteriores, así que creé un alias en mi archivo .bashrc como este:

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

Ahora, en lugar de usar ssh-agent, puedo usar ssh-agent-cyg

P.ej.

$ 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

Fuente original de corrección:

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

190
Chris Snow

Me enfrenté al mismo problema para Linux, y esto es lo que hice:

Básicamente, el comando ssh-agent inicia el agente, pero en realidad no establece las variables de entorno para que se ejecute. Simplemente envía esas variables al Shell.

Necesitas:

eval `ssh-agent`

y luego hacer ssh-add. ConsulteNo se pudo abrir una conexión con su agente de autenticación.

114
n3o

ssh-add y ssh (suponiendo que está utilizando las implementaciones de openssh) requieren una variable de entorno para saber cómo hablar con el agente ssh. Si inició el agente en una ventana de solicitud de comando diferente a la que está usando ahora, o si lo inició incorrectamente, ni ssh-add ni ssh verán que la variable de entorno está establecida (porque la variable de entorno está establecida localmente a la orden de comando se establece en).

No dices qué versión de ssh estás usando, pero si estás usando cygwin, puedes usar esta receta de Agente SSH en 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

Esto iniciará automáticamente un agente para cada nueva ventana de solicitud de comando que abra (que es subóptima si abre varias solicitudes de comando en una sesión, pero al menos debería funcionar).

104
Robin Green

Intenta los siguientes pasos:

1) Abre Git Bash y ejecuta: cd ~/.ssh

2) Intente ejecutar el agente: eval $(ssh-agent)

3) En este momento, puede ejecutar el siguiente comando: ssh-add -l

93
ChechoroArtem

En lugar de usar $ ssh-agent -s, usé $ eval `ssh-agent -s` para resolver este problema.

Esto es lo que hice paso a paso (paso 2 en adelante en GitBash):

  1. Limpié mi carpeta .ssh en C:\user\<username>\.ssh\
  2. Generé una nueva clave SSH
    $ ssh-keygen -t rsa -b 4096 -C "[email protected]"
  3. Compruebe si algún ID de proceso (agente ssh) ya se está ejecutando.
    $ ps aux | grep ssh
  4. (Opcional) Si encuentra alguno en el paso 3, elimine esos
    $ kill <pids>
  5. Comenzó el agente ssh
    $ eval `ssh-agent -s`
  6. Se agregó la clave ssh generada en el paso 2 al agente ssh
    $ ssh-add ~/.ssh/id_rsa
69
vinsinraw

En Windows 10 intenté todas las respuestas enumeradas aquí, pero ninguna de ellas parecía funcionar. De hecho dan una pista. Para resolver un problema simplemente necesitas 3 comandos. La idea de este problema es que ssh-add necesita que las variables de entorno SSH_AUTH_SOCK y SSH_AGENT_PID se configuren con la ruta actual del archivo sock sock-agent y el número de pedido.

ssh-agent -s > temp.txt

Esto guardará la salida de ssh-agent en el archivo. El contenido del archivo de texto será algo como esto:

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

Copie algo como "/tmp/ssh-kjmxRb2764/agent.2764" desde el archivo de texto y ejecute el siguiente comando directamente en la consola:

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

Copie algo como "3044" del archivo de texto y ejecute el siguiente comando directamente en la consola:

set SSH_AGENT_PID=3044

Ahora, cuando las variables de entorno (SSH_AUTH_SOCK y SSH_AGENT_PID) están configuradas para la sesión de consola actual, ejecute el comando ssh-add y no volverá a fallar la conexión del agente ssh.

50
BIOHAZARD

Una cosa que encontré fue que eval no me funcionó usando Cygwin, lo que funcionó para mí fue ssh-agent ssh-add id_rsa.

Después de eso encontré un problema que mi clave privada era demasiado abierta, la solución que encontré para eso (desde aquí ):

chgrp Users id_rsa

tanto como

chmod 600 id_rsa

finalmente pude usar:

ssh-agent ssh-add id_rsa
29
Vnge

Para amplificar en la respuesta de n3o para Windows 7 ...

Mi problema fue que algunas variables de entorno necesarias no se establecieron, y n3o es correcto, ssh-agent le dice cómo configurar esas variables de entorno, pero en realidad no las establece.

Ya que Windows no te permite hacer "eval", esto es lo que debes hacer en su lugar:

Redirigir la salida de ssh-agent a un archivo por lotes con

ssh-agent > temp.bat

Ahora use un editor de texto como el Bloc de notas para editar temp.bat. Para cada una de las dos primeras líneas: - Inserte la palabra "conjunto" y un espacio al comienzo de la línea. - Eliminar el primer punto y coma y todo lo que sigue.

Ahora borra la tercera línea. Tu temp.bat debería verse algo como esto:

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

Ejecutar temp.bat. Esto establecerá las variables de entorno que son necesarias para que ssh-add funcione.

26
Steve Saporta

Correr

ssh-agent bash
ssh-add

Para obtener más detalles puedes buscar

ssh-agent

o corre

man ssh-agent
25
bp zhang

Acabo de hacer funcionar esto. Abra su archivo ~/.ssh/config.

Adjunte lo siguiente-

Host github.com
 IdentityFile ~/.ssh/github_rsa

La página que me dio la pista Configurar SSH para Git dijo que la sangría de un solo espacio es importante ... aunque tenía una configuración aquí de Heroku que no tenía ese espacio y funciona correctamente.

17
Paul Becotte

Si sigues estas instrucciones, tu problema se resolverá.

Si estás en una máquina Mac o Linux, escribe:

eval "$(ssh-agent -s)"

Si estás en una máquina con Windows, escribe:

ssh-agent -s
15
Fahim Boron

Nota:esta es una respuesta a esta pregunta , que se ha fusionado con esta. Esa pregunta fue para Windows 7, es decir, mi respuesta fue para Cygwin/MSYS/MSYS2. Este parece ser para algunos Unix, donde no esperaría que el agente de SSH tuviera que ser administrado de esta manera.

Esto ejecutará el agente SSH y autenticará solo la primera vez que lo necesite, no cada vez que abra su terminal Bash. Se puede usar para cualquier programa que use SSH en general, incluyendo ssh en sí y scp. Solo agrega esto a /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 "[email protected]"; }
12
Renato Silva

Déjame ofrecerte otra solución. Si acaba de instalar Git 1.8.2.2 o más o menos, y desea habilitar SSH, siga las instrucciones direcciones .

Todo a través del paso 5.6 donde puede encontrar un pequeño obstáculo. Si ya se está ejecutando un agente SSH, podría aparecer el siguiente mensaje de error cuando reinicie bash

Could not open a connection to your authentication agent

Si lo hace, use el siguiente comando para ver si se está ejecutando más de un proceso ssh-agent

ps aux | grep ssh

Si ve más de un servicio de ssh-agent, deberá eliminar todos estos procesos. Use el comando kill como se indica a continuación (el PID será único en su computadora)

kill <PID>

Ejemplo:

kill 1074

Una vez que haya eliminado todos los procesos de ssh-agent, ejecute el px aux | grep ssh ordene nuevamente para asegurarse de que se hayan ido, luego reinicie Bash.

Voila, ahora debería obtener algo como esto:

Initializing new SSH agent...
succeeded
Enter passphrase for /c/Users/username/.ssh/id_rsa:

Ahora puede continuar en el paso 5.7 y más allá.

11
Rick

Use el parámetro -A cuando se conecte al servidor, ejemplo:

ssh -A [email protected]

de la página del manual:

-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.
8
Lebnik

La solución básica para ejecutar ssh-agent se responde con muchas respuestas. Sin embargo, ejecutar ssh-agent muchas veces (por cada terminal abierta o por inicio de sesión remoto) creará muchas copias de ssh-agent que se ejecutan en la memoria. Los scripts que se sugieren para evitar ese problema son largos y necesitan escribir y/o copiar archivos separados o necesitan escribir demasiadas cadenas en ~/.profile o ~/.schrc. Déjame sugerir solución simple de dos cuerdas:

Para sh , bash , etc:

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

Para 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`

Que hay aquí:

  • busque el proceso ssh-agent por nombre y por usuario actual
  • cree el archivo de script de Shell adecuado llamando a ssh-agent y ejecute ssh-agent si no se encuentra el proceso actual de ssh-agent de usuario
  • evaluar el script de Shell creado que configura el entorno apropiado

No es necesario proteger el script Shell creado ~/.ssh-agent.tcsh o ~/.ssh-agent.sh del acceso de otros usuarios porque: al principio, la comunicación con ssh-agent se procesa a través de un socket protegido que no es accesible para otros usuarios, y en segundo lugar, otros usuarios pueden encontrar el ssh-agent socket simple por enumeración archivos en el directorio /tmp/. En cuanto al acceso al proceso ssh-agent es lo mismo.

7
oklas

Intente lo siguiente:

ssh-agent sh -c 'ssh-add && git Push heroku master'
5
kenorb

Lea @ la respuesta de la magdalena para explicaciones. Aquí solo intento automatizar la corrección.

Si usa el terminal Cygwin con BASH, agregue lo siguiente al archivo $ HOME/.bashrc. Esto solo inicia ssh-agent una vez en el primer terminal de Bash y agrega las claves a ssh-agent. (No estoy seguro si esto es requerido en 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

NO OLVIDE agregar sus claves correctas en el comando "ssh-add".

5
Kiran Mohan

Tuve este problema, cuando comencé ssh-agent, cuando ya se estaba ejecutando. Se confunde. Para ver si este es el caso, use

eval $(ssh-agent)

para ver si esto es lo mismo que pensaste que debería ser. En mi caso, fue diferente al que acabo de empezar.

Para verificar si tiene más de un agente ssh en ejecución, puede revisar:

ps -ef | grep ssh
4
Jahmic

Tuve el mismo problema en Ubuntu y las otras soluciones no me ayudaron. Finalmente me di cuenta de cuál era mi problema. Había creado mis claves ssh en la carpeta /root/.ssh, así que incluso cuando ejecuté ssh-add como root, no podía hacer su trabajo y seguir diciendo:

Could not open a connection to your authentication agent.

Creé mis claves privadas y públicas ssh en la carpeta /home/myUsername/ y utilicé

ssh-agent /bin/sh

entonces corrí

ssh-add /home/myUsername/.ssh/id_rsa

y el problema se resolvió de esta manera.

Nota: Para acceder a su repositorio en git agregue su contraseña de git cuando esté creando ssh claves con ssh-keygen -t rsa -C "your git email here".

4
Merka

Tuve un problema similar cuando intentaba que esto funcionara en Windows para conectarme al escondite a través de ssh

Aquí está la solución que funcionó para mí.

  1. Resulta que estaba ejecutando el agente de Pageant ssh en mi caja de Windows - comprobaría lo que está ejecutando. Sospecho que es Pageant ya que viene por defecto con PuTTY y winScp

  2. El ssh-add no funciona desde la línea de comandos con este tipo de agente

  3. Debe agregar la clave privada a través de la ventana de interfaz de usuario del concurso, que puede obtener haciendo doble clic en el icono del concurso en la barra de tareas (una vez que se inicia).

  4. Antes de agregar la clave a Pageant, debe convertirla al formato PPK. Las instrucciones completas están disponibles aquí Cómo convertir la clave SSH al formato ppk

  5. Eso es. Una vez que cargué mi clave para esconder, pude usar SourceTree para crear un repositorio local y clonar el control remoto.

Espero que esto ayude...

4
Moonwalker

Para bash integrado en Windows 10, agregué esto a .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
3
Kip

Esto funcionó para mí.

En la ventana de CMD, escriba el siguiente comando:

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
3
kecco

Resolví el error forzando la detención (cancelada) de los procesos de git (agente ssh), luego desinstalé Git y luego volví a instalar Git.

3
Devendra Singh

Si está utilizando PuTTY, quizás necesite configurar la opción "Conexión/SSH/Autent/Permitir reenvío de agente" en "verdadero".

enter image description here

3
Vladius

Usando Git Bash en Win8.1E, mi resolución fue la siguiente:

eval $(ssh-agent) > /dev/null
ssh-add ~/.ssh/id_rsa
2
SrBlanco

Para PowerShell en Windows

Estaba teniendo problemas con PoSH y los comandos Start-SshAgent/Add-SshKey, así que preparé un script rápido que podría ayudar a algunas personas. Está diseñado para ser agregado a su perfil de PowerShell que puede editar ejecutando notepad $PROFILE

if ($(Get-Process ssh-agent) -eq $null)
{
    $ExecutionContext.InvokeCommand.ExpandString($(ssh-agent -c).Replace("setenv", "set"));
}

Detectará si el ssh-agent se está ejecutando o no y solo se ejecutará si no hay ningún agente en ejecución. Tenga en cuenta que $ExecutionContext.InvokeCommand.ExpandString es un comando bastante peligroso, por lo que es posible que no quiera usar esta solución si está utilizando una copia no confiable de ssh-agent.

2
Jonathan DeMarks

También puedes ver tu url remoto. usa git @ github ... en lugar de https: // proptocol

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

2
BraveNewMath

Aquí está la solución que se me ocurrió al usar PowerShell.

Agregue la siguiente función a su Microsoft.PowerShell_profile.ps1

function RunSsh($userIdentity ) {
   $agent=ssh-agent
   $position=$agent[0].IndexOf("=")
   $ending=$agent[0].IndexOf(";")

   $variableStartPosition=$agent[0].IndexOf("export")
   $variableEndPosition=$agent[0].LastIndexOf(";")
   $variableName=$agent[0].Substring($variableStartPosition+7,$variableEndPosition-$variableStartPosition-7)
   [Environment]::SetEnvironmentVariable($variableName, $agent[0].Substring($position+1,$ending-$position-1))

   $position=$agent[1].IndexOf("=")
   $ending=$agent[1].IndexOf(";")

   $variableStartPosition=$agent[1].IndexOf("export")
   $variableEndPosition=$agent[1].LastIndexOf(";")
   $variableName=$agent[1].Substring($variableStartPosition+7,$variableEndPosition-$variableStartPosition-7)
   [Environment]::SetEnvironmentVariable($variableName, $agent[1].Substring($position+1,$ending-$position-1))

   if($userIdentity.Length -eq 0) {
      ssh-add
   } else {
      ssh-add $userIdentity
   }
}

Ahora, desde la línea de comandos, puede ejecutar RunSsh que usa el archivo de identidad en la carpeta ~\.ssh o pasar el archivo de identidad con RunSsh C:\ssh\id_rsa donde C:\ssh\id_rsa es su archivo de identidad.

Para que esto funcione, necesitas tener ssh-add y ssh-agent en tu variable de entorno path.

1
null_pointer

Para los usuarios de Windows, encontré que cmd "eval ssh-agent -s" no funcionó, pero usar git bash funcionó muy bien "eval ssh-agent -s; ssh-add KEY_LOCATION", y asegurarme de que el servicio de ventanas "OpenSSH Key Management" no estuviera deshabilitado

0
aqm

Incluso estaba recibiendo "No se pudo abrir una conexión con su agente de autenticación". al ejecutar el comando mientras se genera y agrega la clave SSH: ssh-add ~/.ssh/id_rsa. Lo resolví deteniendo las múltiples instancias de ssh-agent que se ejecutaban en mi máquina y luego desinstalé el Git del panel de control en mi máquina con Windows y luego volví a instalar Git y las cosas estaban funcionando ahora.

0
Devendra Singh

En mi caso, mi Cortafuegos de Comodo había aislado el agente ssh. Una vez que deshabilité el sandboxing pude clonar el repositorio.

Para su información, estoy usando el firewall de Comodo en Windows 7.

0
neoramos