Автоматический git pull на сервер: проверка ключа хоста не удалась

0

У меня есть сервер с клоном gitlab. Я настроил все, и он работает, но теперь я хочу сделать git pull автоматически. На этом я уже добавил ключ ssh:

https://help.github.com/articles/generating-ssh-keys/

Если я запускаю команду "git pull" через putty, она работает.

Теперь я хочу создать php файл, который автоматически запускает git. Я делаю это вот так:

<?php
echo shell_exec( 'git pull 2>&1' );
?>

Это дает следующую ошибку:

"Ошибка проверки ключа хоста. Fatal: удаленный конец неожиданно повесил трубку"

Я искал решение, и большинство вещей, которые я обнаружил, были проблемы с ключом ssh. Это работает, когда я запускаю команду от пользователя root. Я изменил владельца файла php на root.

Я совершенно новичок в этом, поэтому я мог бы пропустить что-то очевидное. Тем не менее, он работает, когда я выполняю git pull из командной строки, а не когда я вызываю php-скрипт, и я понятия не имею, как это исправить.

Теги:
ssh
github

2 ответа

1
Лучший ответ

Это сообщение в блоге может помочь, основные моменты, которые он предлагает:

Создание php-скрипта следующим образом:

<?php
...
   echo shell_exec("/full/path/to/bin/git pull 2&gt;&amp;1");
...

Примечание. Вы можете найти путь к вашей (Linux) установке Git, выполнив команду which git

Затем выполните начальную попытку Git с пользователем apache, чтобы убедиться, что удаленный файл добавлен в файл known_hosts пользователя следующим образом:

sudo -u www git pull

  • 0
    Если я помещаю пробел после моего каталога, я получаю это: "sh: full / path / to / bin /: является каталогом" Если я не получаю, я получаю это: "sh: / full / path / to / bin / git : Данный файл или каталог отсутствует "
  • 0
    Я смущен вашим комментарием - вы действительно используете "/ full / path / to / bin / git"?
Показать ещё 4 комментария
2

Хотя это именовано, эта ошибка связана с "хост-ключом" вместо ключа, используемого для аутентификации с открытым ключом. Эта ошибка, скорее всего, означает, что ключ хоста (удаленного сервера git) изменился, поскольку он был сохранен в файле known_hosts.

Проверьте ключ, хранящийся в файле .ssh/known_hosts пользователя, под которым запускается php (httpd? Apache?). Чтобы исправить ошибку, удалите строку, соответствующую имени хоста или IP удаленного сервера git. (С точки зрения безопасности вы должны проверить новый "Ключ хоста", прежде чем принимать его.)

  • 0
    Если я использую exec ('whoami'), я получаю имя пользовательского пользователя, которому я назначаю владельца файла для получения доступа по ftp. Как мне найти известные_хосты для этого пользователя?
  • 0
    Обычно вы можете искать этого пользователя в /etc/passwd . Тем не менее, я предполагаю, что это на общем веб-хосте, поэтому вы не сможете этого сделать. Вместо этого вы можете проверить переменную среды HOME ( exec('echo $HOME') ).
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню