Створіть SSH користувача з обмеженими привілеями, щоб використовувати лише сховище Git


12

У мене на моєму сервері SunOS розміщено сховище git, яке я віддалено використовую через ssh

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

Тепер мені потрібно додати більше користувачів, щоб мати доступ до цього сховища, але не знаю як.

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

testUser здатний прошивати і переглядати весь сервер.

Як я можу створити користувачів, які мають доступ лише до git віддалено, клонувати / тягнути / push тощо ...

Спасибі

Відповіді:


12

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

gitolite працює під одним звичайним користувачем на сервері і використовує відкриті ключі SSH для розмежування доступу до сховищ Git (див. " як gitolite використовує ssh " для деяких деталей того, як gitolite робить свою ідентифікацію на основі SSH). gitolite пропонує репозиторій, галузь та навіть деякий контроль доступу на кожен шлях.


1
+1 для гітозу ... Це було зроблено саме для цієї установки.
Джеремі Бууз

12

У вас є два варіанти.

  1. Як згадував topdog, коли ви створюєте користувачів на сервері, встановіть їх оболонку на git-shell ( запис книги тут ). Це дозволить користувачеві увійти через SSH, але замість нормальної, повнофункціональної оболонки (наприклад, sh, bash тощо), вона запуститься, git-shell, що забезпечує лише доступ до функцій git.

  2. Крім того, ви можете зробити свої сховища доступними через інший протокол, наприклад, TCP (використовуючи git-deamon ) або HTTP / HTTPS. Я рекомендую такий сценарій лише для доступу лише для читання.

Ви згадуєте, що хочете підтримати функцію "push" для своїх користувачів, тому вам дійсно варто скористатися опцією №1.


5

вам потрібно змінити їх оболонку на git-shell, що надасть їм доступ лише до функцій git.


Дякую топдогу. В основному користувач буде використовувати власну оболонку git на своєму Mac. Я не дуже хочу, щоб він міг перейти на сервер. Отже, якщо git repo знаходиться на mydomain.com від testUser computer / Mac, у терміналі він може просто git clone ssh: //myUser@mydomain.com/path/to/git запропонувати ввести пароль, а потім завантажити репо. Я просто спробував зараз встановити його оболонку на git-shell. Це вимагає під час виклику клону, але пароль відхиляється.
Бах

вам потрібно встановити оболонку myUsers на git-shell, якщо все, що ви хочете, щоб вони виконувались на сервері, це запускати git-команди та не мати змоги. Більш детальне висвітлення git на сервері дивіться у безкоштовній книзі git progit.org/book/ch4-0.html
topdog

дякую за довідник книги! дуже корисний. Закінчив використання гітоліту, але все ще виникають проблеми з налаштуванням.
Бах

git-shell : "Це оболонка для входу для облікових записів SSH для забезпечення доступу з обмеженим доступом до Git. Вона дозволяє виконувати лише команди Git на стороні сервера, що реалізують функцію" pull / push ", а також спеціальні команди, представлені у підкаталозі з назвою git-shell-command in у домашній каталог користувача. " В Linux додайте "/ bin / git-shell" до "/ etc / shell", а потім "usermod --shell / bin / git-shell $ USER". Btw, книга git тепер знаходиться на сайті git-scm.com/book/en/ch4-0.html
Девід Тонхофер

0

Інший спосіб зробити це - обмежити доступ користувачів у ssh.

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

Приклад - це лише один користувач, але якщо користувачі в одній групі, ви можете відфільтрувати їх за допомогою директиви групи. Щось на зразок

AllowTcpForwarding yes
X11Forwarding yes

Match Group Users
         AllowTcpForwarding no
         X11Forwarding no
         $Here is a directive for git$
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.