Secuencia de commands para realizar un jalón a través de ssh y eludir los requisitos de frase de paso?

Estoy tratando de establecer una continuous integration con Bamboo. Quiero configurar una ssh en nuestro server de escena, cd en el directory correcto y realizar un git pull.

Pude configurar la tarea ssh, pero hacer git pull ha sido difícil.

Pasos que he tomado:

  • Configuró una tarea ssh para crear un cd en el directory del proyecto y ejecutar el siguiente script:

    #!/bin/bash echo "pulling from master" git pull origin master 
  • La secuencia de commands se ejecuta, pero los loggings muestran un Permission denied (publickey). error después de que intenta tirar.

  • Cambié mi URL remota de HTTPS a ssh y creé una key pública. Ahora, cuando bash hacer una extracción manual, solicita la contraseña de la key.

  • Se utilizó ssh-agent para almacenar en caching la frase de contraseña de una session.

  • Se dio count de que este caching solo persiste hasta que cierre mi session, así que seguí los pasos de este artículo ( https://confluence.atlassian.com/display/BITBUCKET/Set+up+SSH+for+Git ) para iniciar ssh-agent con cada nueva session A saber, agregué este script a mi .bashrc :

     SSH_ENV=$HOME/.ssh/environment # start the ssh-agent function start_agent { echo "Initializing new SSH agent..." # spawn ssh-agent /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}" echo succeeded chmod 600 "${SSH_ENV}" . "${SSH_ENV}" > /dev/null /usr/bin/ssh-add } if [ -f "${SSH_ENV}" ]; then . "${SSH_ENV}" > /dev/null ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || { start_agent; } else start_agent; fi 

y agregué esto al file .ssh / config:

 Host myStashInstance.org IdentityFile ~/.ssh/id_rsa 
  • El artículo decía que se me debería solicitar ingresar la contraseña y que el agente se pondría en marcha, pero eso no sucedió. Todavía necesito iniciar manualmente ssh-agent.

Me gustaría saber cuáles serían los próximos pasos para que ssh-agent comience cuando empiece una nueva session, así puedo continuar averiguando cómo terminar de configurar este trabajo. (También estoy abierto a sugerencias sobre otras vías a seguir si estoy completamente en el path equivocado).

Para resumir, te encuentras con el siguiente problema:

  • El agente de Bamboo se ejecuta en el server A
  • El server B es tu server de transición
  • Como parte de la compilation que se ejecuta en el server A, quieres hacer SSH en B y hacer un git pull ahí.
  • La authentication en el repository de Git requiere que ingrese una contraseña o una frase de contraseña (incluso cuando use ssh-agent ).

Hay varias forms en que esto podría resolverse:

Opción 1: ejecutar el agente de Bamboo en el server de etapas

Para simplificar este entorno, instale Bamboo Agent en su server de ensayo. Ingrese la URL y las cnetworkingenciales de Git en el plan de compilation de Bamboo y deje que Bamboo se encargue del trabajo.

Bamboo extraerá el repository de Git, luego puede ejecutar los pasos que desee e implementar en el process del server de transición.

Opción 2: implementar en el server de etapas

En lugar de hacer la operación de Git en su server provisional, hágalo en el server A. Ingrese la URL y las cnetworkingenciales de Git en el plan de compilation de Bamboo y deje que Bamboo se encargue del trabajo.

Una vez que su proyecto esté desprotegido en el server A, ejecute los pasos de compilation que desee hacer allí, luego empackage (zip / tar / jar / …) los resultados de compilation y cópielos en el server de almacenamiento intermedio. Tal vez no necesites usar Git en el server de ensayo.

Opción 3: utilice el file .netrc para la authentication de Git

Esta es la less segura de las opciones. Vuelva a cambiar su URL remota a HTTPS, luego cree un file ~/.netrc en el server de ~/.netrc y agregue una input para su server Git allí, proporcionando nombre de usuario y contraseña, como se describe aquí: https://confluence.atlassian.com/ mostrar / STASH / Permanentemente + autenticar + con + Git + repositorys # Autenticar de forma permanente con los repositorys deGet-Usingthe.netrcfile

Ejemplo:

 machine mygitserver login mario password SECRET 

Precaución, esto requiere que almacene su contraseña en text plano en el file .netrc . Solo use este método si puede vivir con este riesgo. Si la contraseña utilizada para esta count cambia, deberá cambiarla en este file también. Probablemente desee utilizar una count técnica / de service para esto, no una count de usuario real. Bloquee esta count tanto como sea posible.

Una de estas tres opciones debería ayudarte a resolver tu problema.