Could not create directory '/.ssh'. Host key verification failed. fatal: The remote end hung up unexpectedly
Leia e considere sua mensagem de erro. As chaves do host são armazenadas no arquivo ~ / .ssh / known_hosts. Seu usuário do Apache tem "/" como seu diretório inicial e definitivamente não tem e não deve ter acesso de gravação à raiz.
Sugiro que você crie uma conta de usuário para isso ... talvez gitpull-user
ou algo assim. Certifique-se de que ele tenha um diretório inicial utilizável, mesmo que seja algo atípico. Entre como aquele usuário e crie um script de shell que realiza o que você está tentando fazer como aquele usuário. Claro, você também terá que copiar sua chave id_rsa apropriada para a conta do usuário, etc.
Configure o sudo para iniciar o script adicionando esta linha ao / etc / sudoers
apache ALL = (gitpull-user) NOPASSWD: /path/to/script.sh'
e também se você tiver problemas "Sem TTY":
Defaults:apache !requiretty
Altere seu script PHP para chamar sudo -u gitpull-user ./script.sh
Seria possível alterar o diretório pessoal do Apache para um local "real" e soltar a chave lá, mas isso exporia um risco em que seus dados teriam que ser de propriedade do apache e a chave poderia ser lida se o daemon foi comprometido. Estabelecer um segundo usuário fornece um nível de isolamento.