ssh - sesión - No se pudo abrir una conexión a su agente de autenticación
registro de autenticación véase registro de sesión para más detalles): (30)
Nota: esta es una respuesta a esta pregunta , que se ha fusionado con esta. Esa pregunta fue para Windows 7, lo que significa que 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 se autentificará 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. Simplemente agregue 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 "$@"; }
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.
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 usa ssh-add
como lo harías normalmente.
Buen dato:
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 la solución:
¿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 las otras respuestas .
Vea las siguientes respuestas:
- ssh-add se queja: no se pudo abrir una conexión con su agente de autenticación
- Git push requiere nombre de usuario y contraseña (contiene instrucciones detalladas sobre cómo usar ssh-agent)
- ¿Cómo ejecutar el agente de autenticación (git / ssh)? .
- No se pudo abrir una conexión a su agente de autenticación
Para iniciar automáticamente ssh-agent y permitir que una sola instancia funcione en varias ventanas de consola, consulte Iniciar ssh-agent al iniciar sesión .
¿Por qué necesitamos usar eval
lugar de ssh-agent
?
Para saber por qué, vea la 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?
MsysGit o Cygwin
Si está utilizando Msysgit o Cygwin, puede encontrar un buen tutorial en SSH-Agent en msysgit y cygwin y bash :
Agregue un archivo llamado
.bashrc
a su carpeta de inicio.Abre el archivo y pégalo en:
#!/bin/bash eval `ssh-agent -s` ssh-add
Esto supone que su clave está en la ubicación
~/.ssh/id_rsa
. Si no lo está, incluya una ruta completa después del comandossh-add
.Agregar o crear el archivo
~/.ssh/config
con el contenidoForwardAgent yes
En el tutorial original, el
ForwardAgent
esYes
, pero es un error tipográfico. Usa todo en minúsculas o obtendrás errores.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, revise Keychain . Estoy en una Mac ahora, así que utilicé el tutorial ssh-agent con zsh & keychain en Mac OS X para configurarlo, pero estoy seguro de que una búsqueda en Google tendrá mucha información para Windows.
Actualización : una mejor solución para Mac es agregar su clave al llavero de Mac OS:
ssh-add -K ~/.ssh/id_rsa
Simple como eso.
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 sugerencia de Configurar SSH para Git dijo que la sangría de un solo espacio es importante ... aunque tenía una configuración de Heroku aquí que no tenía ese espacio y funciona correctamente.
Déjame ofrecerte otra solución. Si acaba de instalar Git 1.8.2.2 o aproximadamente, y desea habilitar SSH, siga las instrucciones bien escritas.
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 px aux | Vuelva a ejecutar el comando grep ssh 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á.
El siguiente comando funcionó para mí. Estoy usando CentOS.
exec ssh-agent bash
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 de ssh-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.
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):
- Limpié mi carpeta .ssh en
C:/user/<username>/.ssh/
- Generé una nueva clave SSH
$ ssh-keygen -t rsa -b 4096 -C "[email protected]"
- Compruebe si algún ID de proceso (agente ssh) ya se está ejecutando.
$ ps aux | grep ssh
- (Opcional) Si encuentra alguno en el paso 3, elimine esos
$ kill <pids>
- Comenzó el agente ssh
$ eval `ssh-agent -s`
- Se agregó la clave ssh generada en el paso 2 al agente ssh
$ ssh-add ~/.ssh/id_rsa
En mi caso, mi cortafuegos Comodo había colocado en el buzón de arena al 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.
Esto worked 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
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
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.
Intenta lo siguiente:
ssh-agent sh -c ''ssh-add && git push heroku master''
Intenta los siguientes pasos:
1) Abre Git Bash y ejecuta: cd ~/.ssh
2) Intente ejecutar el agente: eval $(ssh-agent)
3) Ahora mismo, puede ejecutar el siguiente comando: ssh-add -l
La solución básica para ejecutar ssh-agent
se responde con muchas respuestas. Sin embargo, ejecutar ssh-agent
muchas veces (por cada terminal abierto o por inicio de sesión remoto) creará muchas copias o ssh-agent
ejecutándose 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 una 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í:
- buscar el proceso
ssh-agent
por nombre y por usuario actual - cree el archivo de script de shell adecuado llamando a
ssh-agent
y ejecutessh-agent
si no se encuentra el proceso actual de usuariossh-agent
- evaluar el script de shell creado que configura el entorno apropiado
No es necesario proteger el script de shell creado ~/.ssh-agent.tcsh
o ~/.ssh-agent.sh
del acceso de otros usuarios porque: la primera comunicación con ssh-agent
se procesa a través de un socket protegido al que no se puede acceder otros usuarios, y en segundo lugar otros usuarios pueden encontrar ssh-agent
socket simple por archivos de enumeración en el directorio /tmp/
. En cuanto al acceso al proceso ssh-agent
son las mismas cosas.
Lea la respuesta de @cupcake 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".
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 saca esas variables al shell.
Necesitas:
eval `ssh-agent`
y luego hacer ssh-add. Consulte No se pudo abrir una conexión con su agente de autenticación .
Para amplificar en la respuesta de n3o para Windows 7 ...
Mi problema fue que algunas variables de entorno necesarias no se configuraron, 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:
Redirige la salida de ssh-agent a un archivo por lotes con
chgrp Users id_rsa
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 principio 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:
chmod 600 id_rsa
Ejecutar temp.bat. Esto establecerá las variables de entorno que son necesarias para que ssh-add funcione.
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
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
Resolví el error forzando la detención (cancelada) de los procesos de git (agente ssh), luego desinstalé Git y luego volví a instalar Git.
Si está utilizando Putty, quizás deba configurar la opción "Conexión / SSH / Autent / Permitir reenvío de agente" en "verdadero".
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
También puedes ver tu url remoto. usa git @ github ... en lugar de https: // proptocol
vea https://.com/a/33928364/551811
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
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í.
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
El ssh-add no funciona desde la línea de comandos con este tipo de agente
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 haya iniciado).
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
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...
Una cosa que encontré fue que eval
no me funcionó con 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 here ):
ssh-agent ssh-add id_rsa
tanto como
ssh-agent > temp.bat
Finalmente pude usar:
set SSH_AUTH_SOCK=/tmp/ssh-EorQv10636/agent.10636
set SSH_AGENT_PID=8608
Usando Git Bash en Win8.1E, mi resolución fue la siguiente:
eval $(ssh-agent) > /dev/null
ssh-add ~/.ssh/id_rsa
Use el parámetro -A cuando se conecte al servidor, ejemplo:
ssh -A root@myhost
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.
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 indicador de comando 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 comando aviso está establecido en).
No dice qué versión de ssh está usando, pero si está usando cygwin, puede usar esta receta del 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 (lo que es subóptimo si abre múltiples solicitudes de comando en una sesión, pero al menos debería funcionar).