SSH, frases de contraseña, llaveros, No se pudo abrir una conexión con su agente de autenticación

6

Me sorprendería mucho si alguien tiene la respuesta a esto. He buscado en Google durante mucho tiempo pero sin suerte.

Como desarrollador de iOS que pronto dará la bienvenida a un nuevo miembro del equipo, quiero configurar un servidor de integración continua para que cualquier persona que ingrese el código inicie una compilación, que a su vez establecerá el estado de una luz de compilación proporcionando Una indicación visual del estado del código. Si la compilación se rompe, no se mantendrá así por mucho tiempo porque veremos una gran luz roja.

Los ingredientes que escogí para hacer este trabajo son Jenkins , Git y un Mac mini. Día a día no tendré acceso físico al mini, pero la light < está controlado por Ethernet, no hay problema.

El primer paso para que Jenkins administre una compilación es clonar el repositorio git. Por razones obvias, descarta cualquier código antiguo y toma una copia de todo el repositorio. Estoy usando un git "URL del repositorio" de [email protected]:repo/ProjectName.git . Naturalmente hice 'su - jenkins' y me convertí en usuario jenkins, luego pasé por el proceso de scp id_rsa.pub [email protected] . Como gitfella adjunté esa clave pública a authorized_hosts .

La sorpresa llegó cuando volví a ser el usuario jenkins y probé ssh [email protected] . Me pidieron la frase de contraseña para jenkins. En esta etapa, me di cuenta de que el clon del repositorio estaba fallando porque no se podía ingresar la frase de contraseña mientras Jenkins se estaba ejecutando sin un shell interactivo.

La forma de obtener la contraseña en el llavero es ssh-add -K (y antes de Lion no recuerdo haber tenido que hacer esto nunca), pero esto no funciona en un shell ssh, falla con el mensaje Could not open a connection to your authentication agent. La ejecución de ssh-agent muestra las variables de entorno que deben configurarse para permitir que esto suceda, y una vez que se hace ssh-add -K funciona. Entonces el clon git está bien. Luego pensé que el problema se había resuelto, pero al siguiente inicio de sesión en ssh me piden la frase de contraseña nuevamente.

Ahora tengo la fase de clonación de git de la compilación en funcionamiento, pero preferiría no eliminar la frase de contraseña de Jenkins por completo ...

¿Cómo pueden establecerse los valores de ssh-agent en cada invocación de este proceso de construcción de Jenkins? Jenkins se inicia ejecutando launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist . ¿Sería posible configurar el entorno ssh-agent aquí de alguna manera? ¿Permanecerían estas configuraciones mientras Jenkins lo haga (por arranque)? Estoy reacio a meterme con esto ahora que tengo este pequeño problema mayormente resuelto, pero tal vez algún experto sepa la solución correcta.

    
pregunta Adam Eberbach 15.05.2012 - 08:21

2 respuestas

1

El comando ssh-add -K agrega la clave al llavero de Apple, pero hay un llavero específico para SSH, no relacionado con el de Apple.

Se ejecuta como un demonio e interactúa solo con SSH.

No sé si esto te ayudará, pero tengo la fuerte sensación de que lo hará.

Keychain está disponible como un paquete homebrew, por lo tanto, si obtiene nomebrew disponible en su sistema para instalarlo, simplemente escriba brew install keychan . Después de eso un man keychain ayudará mucho.

    
respondido por el Felipe 12.05.2014 - 14:35
0

Por lo que tengo entendido, su problema es que cuando cierra la sesión iniciando jenkins con su entorno ssh-agent, jenkins pierde las credenciales de autenticación, ¿no?

¿Intentaste iniciar jenkins de esa manera en la configuración de tu agente de lanzamiento?

ssh-agent jenkins (just as an example)

Eso significa que invocas jenkins desde el ssh-agent, configurando todos los entornos necesarios y cargando las claves necesarias desde el llavero.

    
respondido por el Garex 22.02.2017 - 03:49

Lea otras preguntas en las etiquetas