No se ha podido abrir una conexión con su agente de autenticación

Me encuentro con este error de:

idioma: lang-none -->

$ 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.

He intentado añadir las claves y me sale este error de abajo:

idioma: lang-none -->

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

MsysGit o Cygwin

Si estás usando Msysgit o Cygwin puedes encontrar un buen tutorial en [SSH-Agent in msysgit and cygwin and bash][ant]:

  1. Añade un archivo llamado .bashrc a tu carpeta de inicio.

  2. Abre el archivo y pégalo:

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

  4. Añade o crea el archivo ~/.ssh/config con el contenido

     ForwardAgent sí

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

  1. Reinicie Msysgit. Te pedirá que introduzcas tu frase de acceso una vez, y eso es todo (hasta que termines la sesión, o tu ssh-agent sea eliminado.)

Mac/OS X

Si no quieres iniciar un nuevo ssh-agent cada vez que abres una terminal, echa un vistazo a Keychain. Estoy en un Mac ahora, así que usé el tutorial ssh-agent con zsh & keychain en Mac OS X para configurarlo, pero estoy seguro que una búsqueda en Google tendrá mucha información para Windows.

Actualización: Una mejor solución en Mac es añadir la clave al llavero de Mac OS:

ssh-add -K ~/.ssh/id_rsa

Así de simple.

Comentarios (10)

ssh-add y ssh (asumiendo que está usando 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 símbolo del sistema diferente a la que está usando ahora, o si lo inició incorrectamente, ni ssh-add ni ssh verán esa variable de entorno establecida (porque la variable de entorno se establece localmente en el símbolo del sistema en el que se establece).

No dices qué versión de ssh estás usando, pero si estás usando la de cygwin, puedes usar esta receta de SSH Agent on 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á un agente automáticamente para cada nueva ventana de prompt de comandos que abra (lo cual es subóptimo si abre múltiples prompts de comandos en una sesión, pero al menos debería funcionar).

Comentarios (4)

Permíteme ofrecer otra solución. Si acabas de instalar Git 1.8.2.2 o más, y quieres habilitar SSH, sigue las [instrucciones] bien escritas (https://confluence.atlassian.com/display/BITBUCKET/Set+up+SSH+for+Git).

Todo hasta el paso 5.6 donde puede encontrar un pequeño inconveniente. Si un agente SSH ya se está ejecutando podrías obtener el siguiente mensaje de error cuando reinicies bash

Could not open a connection to your authentication agent

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

ps aux | grep ssh

Si ves más de un servicio ssh-agent, tendrás que matar todos estos procesos. Utilice el comando kill de la siguiente manera (el PID será único en su ordenador)

kill 

Ejemplo:

kill 1074

Después de haber eliminado todos los procesos de ssh-agent, ejecute el comando px aux | grep ssh de nuevo para asegurarse de que han desaparecido, y luego reinicie Bash.

Voilà, ahora deberías obtener algo como esto:

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

Ahora puedes continuar con el paso 5.7 y siguientes.

Comentarios (4)