У меня проблемы с настройкой ограничений 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
Ноты: