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

Создайте пользователя SSH с ограниченными правами для использования только репозитория Git

У меня есть репозиторий git, размещенный на моем сервере SunOS, который я использую удаленно через ssh

git clone ssh://myUser@mydomain.com/path/to/git

Теперь мне нужно добавить больше пользователей, чтобы иметь доступ к этому репозиторию, но не знаю, как это сделать.

Я добавил один testUser в ssh, но я не могу ограничить эти права пользователя только использованием git.

testUser может использовать ssh и просматривать весь сервер.

Как я могу создать пользователей, которые могут получить доступ только к git удаленно, клонировать / тянуть / нажимать и т. Д.

Спасибо

В основном у вас есть два варианта.

  1. Как упоминалось в topdog, когда вы создаете пользователей на сервере, установите для их оболочки значение git-shell (запись в книге здесь). Это позволит пользователю войти в систему через SSH, но вместо запуска обычной полнофункциональной оболочки (например, sh, bash и т. Д.) Он будет запускать git-shell, который обеспечивает доступ только к функциям git.

  2. В качестве альтернативы вы можете сделать свои репозитории доступными через другой протокол, например TCP (используя мерзавец) или HTTP / HTTPS. Я бы рекомендовал такой сценарий только для доступа только для чтения.

Вы упомянули, что хотите поддерживать функцию «push» для ваших пользователей, поэтому вам действительно стоит выбрать вариант №1.

Вы можете подумать об использовании гитолит под одним пользователем вместо настройки нескольких git-shell пользователей (и требуемые разрешения группы и группы, чтобы они могли совместно использовать доступ к репозиториям).

гитолит работает под управлением одного обычного пользователя на сервере и использует открытые ключи SSH для разграничения доступа к репозиториям Git (см. «как гитолит использует ssh», Чтобы узнать, как гитолит выполняет идентификацию на основе SSH). гитолит предлагает для каждого репозитория, каждой ветки и даже некоторый контроль доступа для каждого пути.

вам нужно изменить их оболочку на git-shell, которая предоставит им доступ только к функциям git.

Другой способ сделать это - ограничить доступ пользователей в ssh.

(http://prefetch.net/blog/index.php/2006/09/05/limiting-access-to-openssh-directives/)

В примере используется только один пользователь, но если пользователи находятся в одной группе, вы можете отфильтровать их с помощью директивы group. Что-то вроде

AllowTcpForwarding yes
X11Forwarding yes

Match Group Users
         AllowTcpForwarding no
         X11Forwarding no
         $Here is a directive for git$