Я хотел бы установить сервер 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 для отправки коммитов в центральное репо.
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
.