Как запретить пользователю git логиниться по ssh?

Есть OpenSSH, адрес репозитория выглядит так git@myserver:/home/git/project.git. Авторизация по ключам. Как сделать так, чтобы коммитить могли, а заходить на сервер по ssh нет.
  • Вопрос задан
  • 2823 просмотра
Решения вопроса 1
EvilShadow
@EvilShadow
Используйте gitolite, он сделан именно для таких случаев.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Oreolek
@Oreolek
Поставить шеллом пользователям git-shell. Позволяет работать с git, но накрепко запрещает все остальные операции.
Ответ написан
Комментировать
laQie
@laQie
usermod -s `which nologin` LOGIN
Ответ написан
Комментировать
kotomyava
@kotomyava
Системный администратор
Можно для этих пользователей создать группу, для этой группы описать в конфиге sshd описать блок:
Match Group gitusers
ForceCommand git_restricted
X11Forwarding no
AllowTcpForwarding no
AllowAgentForwarding no
PermitTunnel no

Где git_restricted, это скриптик на вашем любимом языке, который проанализирует команду, которую пытался запустить пользователь, и которая будет в переменной окружения SSH_ORIGINAL_COMMAND, и если это одна из нужных команд (git-receive-pack, git-upload-pack, git-upload-archive) будет её выполнять с нужными аргументами.

Если поискать, есть готовые решения. Хотя и написать-то не проблема.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы