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

Сервер GIT с аутентификацией по имени пользователя и паролю

Я хотел бы установить сервер GIT и позволить моим разработчикам входить в систему, используя имя пользователя и пароль, чтобы фиксировать и вносить изменения в проекты. Мне также нужно управлять доступом разработчиков к проектам (я думаю, мне следует использовать для этого gitolite).

Как я могу это сделать?

Я привык к SVN, что легко, потому что вы можете установить имя пользователя и пароль для каждого разработчика, который может легко получить доступ к репозиторию без создания ключа ssh и размещения его на сервере.

Спасибо

Возможно, вы об этом не знаете, но Git - это распределенная система контроля версий. Это важно для вашего понимания. OTOH SVN и CVS централизованы. У вас все еще может быть центральный репозиторий в Git, и если вы это сделаете, ваши пользователи должны будут иметь возможность входить на этот сервер, используя доступ SSH или HTTP, найдите его. Вообще говоря, Git зависит от аутентификации сервера.

Итак, чтобы создать репозиторий git на сервере Debian или Ubuntu для централизованного использования:

# apt-get install git
# cd /var/git
# git init --bare myreponame.git
# adduser <username>    as needed

На данный момент у вас есть пустое репо. Чтобы клонировать его на рабочий стол в Debian или Ubuntu:

Для SSH-подключений: найдите ssh keygen и настройте беспарольное соединение с вашим сервером. Keygen и совместное использование - это только две команды.

Чтобы клонировать репо:

$ git clone <server>:/var/git/myreponame.git

$ cd myreponame

Теперь вы можете добавлять файлы и каталоги ... когда вы использовали git add и git commit, вы можете использовать git push для отправки коммитов в центральное репо.

  • Существуют репозитории, отличные от голых, вы должны прочитать об этом, используйте стандартные ссылки Git, только Google.
  • Предупреждение «Общий репозиторий» - это не то, что вы думаете по названию.

gitolite использует аутентификацию с открытым ключом и FWIW, вам не нужно генерировать пары ключей для всех. Просто попросите у них открытый ключ.

Конфигурация в gitolite это просто еще один репозиторий, вам просто нужно предоставить доступ и соответственно добавить открытые ключи.

Я хотел бы установить сервер GIT и позволить моим разработчикам входить в систему, используя имя пользователя и пароль, чтобы фиксировать и вносить изменения в проекты. Мне также нужно управлять доступом разработчиков к проектам

Я бы предложил использовать GitLab Community Edition. Поскольку в нем есть все необходимые функции и многое другое.

Я привык к SVN, что легко, потому что вы можете установить имя пользователя и пароль для каждого разработчика, который может легко получить доступ к репозиторию, не создавая ключ ssh и не помещая его на сервер.

на самом деле ssh-ключ очень удобен, потому что вам не нужно каждый раз вводить логин / пароль, поскольку вы хотите клонировать / тянуть / нажимать / и т. д.

В любом случае с gitlab вы можете использовать логин / пароль и / или ключ ssh.

Если вам нужна аутентификация по паролю через SSH и авторизация через Gitolite, вы можете легко это сделать.

По сути, вы создаете учетную запись для каждого пользователя и помещаете их в группу или применяете следующие Match для всех пользователей и сделайте исключения для тех, кто должен иметь возможность войти в систему. В моем примере я предполагаю, что вы помещаете всех пользователей git в группу git-users, имя хоста git, Gitolite работает как пользователь git и Gitolite установлен на /opt/gitolite. ЕСЛИ что-то не так, просто измените инструкцию

В /etc/ssh/sshd_config вам придется

Match Group git-users
    X11Forwarding no
    AllowTcpForwarding no
    AllowAgentForwarding no
    PermitTTY no
    ForceCommand sudo -u git -H /opt/gitolite/src/gitolite-shell $USER

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

И что это sudo команда работает без пароля, который вы делаете visudo и там в файле sudoers добавьте

Defaults!/opt/gitolite/src/gitolite-shell       env_keep+=SSH_CONNECTION
Defaults!/opt/gitolite/src/gitolite-shell       env_keep+=SSH_ORIGINAL_COMMAND

переслать SSH_CONNECTION и SSH_ORIGINAL_COMMAND переменные среды, которые необходимы Gitolite для правильной работы и

%git-users      git = (git) NOPASSWD: /opt/gitolite/src/gitolite-shell

что говорит о том, что каждый пользователь в группе git-users разрешено выполнение на хосте с именем git как пользователь git без указания пароля команда /opt/gitolite/src/gitolite-shell.