Esta consulta no está directamente relacionada con Git, pero como uno de los transportes admitidos por Git es SSH y estoy intentando utilizar el reenvío de agentes, pensé en pedir una aclaración (las páginas de manual me han decepcionado).
Estoy intentando automatizar una implementación de software usando Capistrano, logré suspender algunos de los puntos débiles (preinicio de los hosts conocidos, antes de la implementación, etc.), pero me queda la siguiente situación.
Mi equipo inicia sesión en el servidor como ellos mismos, cuentas de usuario individuales, todos están en un developers
grupo y umask
es 002
. Nada de lo anterior es realmente relevante, excepto decir que el propósito es asegurar que mi equipo siempre pueda trabajar como él mismo, sin requerir privilegios de superusuario.
Nos conectamos al servidor example.com
usando lo siguiente ~/.ssh/config
:
Host example.com
User beaks
ForwardAgent yes
IdentityFile ~/.ssh/id_rsa_business
El inicio de sesión inicial funciona perfectamente, ssh example.com
abre una conexión con mi cuenta de usuario y todo está en orden.
El problema viene en el siguiente paso,
git ls-remote [email protected]:project/repository.git
Esto utiliza la capa de transporte Git+SSH antes mencionada (ver enlace arriba) y normalmente debería usar mi clave de agente reenviado (con la que he verificado que está presente env | grep SSH_AUTH_SOCK
)
La respuesta es un simple "error de autenticación (clave pública), el otro extremo se colgó inesperadamente", sospecho que se debe a que el agente de mi usuario no se utiliza cuando me acerco github.com
como su usuario compartido git
.
Tampoco puedo descartar EC2
rarezas (políticas de seguridad, etc.), pero en ese caso, habría esperado un tiempo de espera o una falla de conexión. Me siento bastante seguro de que estoy acertando github.com
y de que no me dejan entrar porque mi agente no ofrece mi beaks
clave a su git
usuario.
Feliz de agregar información adicional si me perdí algo.
Respuesta1
Simplemente ver que ssh-agent se está ejecutando no es suficiente. Mire para ver si la clave que desea está presente. ssh-add -L
¿Ha verificado que esta clave funciona desde algún otro host? ¿Qué ssh-add -L
imprime en ese sistema?
También puede ejecutar GIT_TRACE=1 git ls-remote ...
e imprimirá el comando ssh que ejecuta. Puede ejecutar manualmente el comando ssh y hacerlo funcionar antes de incorporar git a la imagen.
Respuesta2
En realidad nadie respondió a esta pregunta.por lo que las personas que vengan aquí pueden beneficiarse al ver mi respuesta a una pregunta similar.https://superuser.com/a/1141035/3376