Буду признателен вам, если вы поделитесь своими решениями, наличие которых возможно в любом случае, так как найдется не мало тех, кто сталкивался с подобной нетривиальной задачей.
Суть в следующем, имеем сервис, например PHP, который может выполнять команды через shell_exec, описанного в скриптах пользователя user:user. При этом, надо выполнить не просто команду, а например, обновление репозитория с соединение через SSH-ключ, настроенного у user:user. (надо дополнить, что команда выполняется при открытии страницы в браузере).
Казалось бы, можно войти www-data под user:user и выполнить pull запрос, но вот незадача, имеется условие, что нельзя хранить пароли в открытом виде, т.е. в скриптах и бинарниках.
Также, не вариант, добавлять пользователя в группу www-data, так как предполагается что другие пользователи тоже в этой группе, и с легкостью могут напортачить "соседям".
Все это и стало причиной вопроса, а как же в shell_exec выполнить pull по SSH-ключу, без входа под пользователем?
На ум пока приходит только удаленное исполнение скриптов, опять же через подключение www-data к user:user по SSH с использованием ключей. Но у данного способа есть существенный минус, так как необходимо хранить приватные ключи у www-data, и забивать known-hosts - со временем это черевато неконтролируемым захламлением.
Поделитесь опытом, как вы решали подобную задачу, заранее благодарен.
* Забыл добавить, что банальное (именно банальное) добавление в Cron - не вариант, так как сервисы могут быть разные и команды тоже