Назад | Перейти на главную страницу

У меня проблемы с настройкой ограничений IP с помощью Gitolite

У меня проблемы с настройкой ограничений IP с помощью Gitolite. Это может быть что-то простое, и я использую его впервые (я наконец перехожу с Gitosis, потому что он не может делать то, что мне нужно)

В основном у моих клиентских сайтов есть репозиторий git. Я нажимаю на это репо, и крючок post-receive отправляется на ее живой сайт или на разработчика, в зависимости от того, куда я нажимаю. В любом случае, дело в том, что клиенту нужен доступ к файлам на своем сайте, и я не против, но поскольку у нее будет доступ к своему SSH-ключу для своего репо в ~ / .ssh, у нее будет прямой доступ к файлам. доступ к репо, который я не хочу разрешать извне веб-сервера.

Это соответствующая часть моей конфигурации:

repo    example.com
        R VREF/FROM/127.0.0.1 = user

Это будет работать, за исключением того, что Gitolite создает неверный файл authorized_keys:

command="/usr/share/gitolite/gl-auth-command user",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ,from="127.0.0.1" ssh-rsa...

Проблема заключается в пробеле после no-pty. Удалите пространство, и все работает нормально. Оставьте пробел, и ключ игнорируется.

Приветствуются любые идеи о том, как это правильно настроить! Я действительно не хочу запускать sed для файла authorized_keys каждый раз, когда я что-то меняю, если нет другого пути ...

Спасибо!

Поваренная книга гитолита "пример 2: ограничение по IP-адресу источника"показывает, что этот VREf ничего не добавляет к авторизованному ключу.

И VREF лучше определять в гитолите V3 (вместо виртуальные ссылки в gitolite V2).

Решение:

1 Сделайте триггеры / ip-limit, содержащие

#!/bin/bash

#
# ip-limit
#

UnrestrictedUserName=Me
PermittedIP=127.0.0.1

if [ "$GL_USER" == "$UnrestrictedUserName" ] ; then
    exit 0;
fi
IP=$(echo $SSH_CLIENT | perl -pe 's/ .*//g');
if [ "$IP" != "$PermittedIP" ] ; then
    echo "You ($GL_USER) are not permitted from the IP ($IP)" >&2
    exit 1;
fi
exit 0

2 Поручить гитолиту использовать его:

chmod 0777 triggers/ip-limit
cp .gitolite.rc .gitolite.rc.origonal
perl -pi -e 's/(^.*ENABLE)/    PRE_GIT => ['\''ip-limit'\''],\n$1/g' .gitolite.rc

Ноты:

  • VREF вызывается только при нажатии, поэтому его нельзя использовать для ограничения выборки и т. Д.
  • GL_REPO тоже может кому-то пригодиться.