Хит после получения Gitosis для развертывания репозитория, получающего ошибки открытого ключа - PullRequest
3 голосов
/ 29 марта 2011

У меня настроен gitosis на моем сервере, и я пытаюсь создать ловушку после получения, которая будет проверять изменения в рабочем каталоге на удаленном компьютере.

Изначально я получил сообщение об ошибке cannot open /home/user/source/testing-local/.git/FETCH_HEAD: Permission denied, поэтому я изменил владельца группы в папке .git рабочего каталога на пользователя git.

После этого я получил ошибку Host key verification failed, которая заставила меня проверить, какой пользователь запускал хук, конечно, мерзавец (глупый я!), Поэтому я установил ключ в гитозе для пользователя мерзавца, под которым он запускается, и включил это в gitosis.conf. Теперь я получаю старую Permission denied (publickey).

Мой хук после получения выглядит следующим образом:

#!/bin/bash
while read oldrev newrev refname
do
  if [ "$refname" == "refs/heads/master" ]; then
    WORKDIR=/home/user/source/testing-local
    export GIT_DIR=$WORKDIR/.git
    pushd $WORKDIR >/dev/null
    id
    git pull --quiet >/dev/null
  fi
done

Вызов id предназначен только для проверки того, от какого пользователя я работаю.

Есть ли более простой способ добиться этого ?! Я пропустил что-то ключевое в моей настройке?

1 Ответ

2 голосов
/ 29 марта 2011

Необходимо убедиться в значении переменной среды $HOME для пользователя git, выполняющего этот хук.

$HOME/.ssh - это место, где ssh будет искать закрытый ключ во время рукопожатия.
Также убедитесь, что каталог ssh на конце gitosis имеет необходимые разрешения .

server$ chmod go-w ~/
server$ chmod 700 ~/.ssh
server$ chmod 600 ~/.ssh/authorized_keys

Наконец, посмотрите раздел «Отказано в доступе (publickey)» на GitHub , который повторяет то, что я упоминал выше о HOME:

Это обычно происходит, когда ssh не может найти ваши ключи.
Убедитесь, что ваш ключ находится в расположении по умолчанию, ~/.ssh.

...