Git pull del server Bitbucket

Tengo un problema con ejecutar git pull desde una secuencia de commands php en un server remoto. He visto muchas fonts diferentes para que funcione, pero ninguna funciona para mí. Entonces, ¿qué he hecho hasta ahora?

  • Creado el pub y la key privada para Apache:

    mkdir /var/www/.ssh sudo chown -R apache:nobody /var/www/.ssh su - apache -c "ssh-keygen -t rsa" 
  • Luego puse mi key pública en Bitbucket.

  • Luego ejecuto el command:

     sudo -u apache git pull 

Todo funciona bien

Después de todo, escribí un simple script sh que llamé desde PHP .

  1. El script .sh:

     #!/bin/sh git pull 
  2. y el script PHP:

     <?php $cmd="./gitpullsc.sh 2>&1"; echo exec($cmd); ?> 

Ejecuto el script php desde un browser web y recupero esto:

Permiso denegado (publickey).
fatal: no se pudo leer desde el repository remoto.

Por favor, asegúrese de tener los derechos de acceso correctos y existe el repository.

Luego intenté agregar al script whoami (para ver si el usuario que ejecuta el script php es el correcto) y obtuve Apache. Entonces todo está bien.

Yo uso Red Hat Linux.

Cualquier ayuda apreciada 🙂

ACTUALIZAR

Ok, tal vez encontré el problema, pero aún estoy buscando la solución.

Vuelvo a ejecutar el sudo -u apache git pull y ahora vuelvo a solicitar la contraseña privada.

Pero si ejecuto el command ssh-add -l obtengo:

2048 * ** thenumber ** /var/www/.ssh/id_rsa (RSA)

Entonces creo que todo está bien. Pero el problema tal vez es que ejecuto el agente ssh de esta manera:

 ssh-agent /bin/bash 

ACTUALIZAR

Sí, el problema fue realmente el post de contraseña. Todavía no sé cómo solucionarlo, pero por ahora acabo de dejar la contraseña en blanco y funciona …

Respondí una pregunta similar. Realmente quería agregar un comentario que se refiera a esa respuesta, pero no tengo suficientes puntos para agregar un comentario.

La idea es usar start ssh-agent una vez y cargarle las llaves. Más tarde, en su .bashrc, actualiza las variables de entorno para que apunte al mismo ssh-agent (que ya tiene las keys).

Por favor, mira tratando de implementar usando Capistrano, pero ssh-agent en mi máquina remota no mantiene cargada mi identidad por lo que el command git falla; ¿por qué?

Necesita el administrador para el ssh-agent llamado keychain

yum instalar llavero

Si no está en el repository oficial de RHEL, puede getlo del repository de forjado de RPM . Para probar, inicie una nueva session de usuario y cargue manualmente la key en ssh-agent. Suponiendo que su key generada se llama id_dsa y se encuentra dentro de ~ / .ssh / dir.

 $ssh-add ~/.ssh/id_dsa 

Sin embargo, puede que aún no resuelva el problema del browser, ya que esa es una session de usuario diferente para el usuario de Apache.