Инструменты пользователя

Инструменты сайта


git_i_tolko_ssh

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

git_i_tolko_ssh [2020/06/13 13:45] (текущий)
Строка 1: Строка 1:
 +====== GIT и только SSH ======
  
 +{{htmlmetatags>
 +metatag-description=(Простая настройка GIT с использованием протокола SSH.)
 +}}
 +
 +<note important>Для совместной работы пары человек на закрытом проекте, всё, что вам нужно ― это [[SSH]]- сервер и "голый" репозиторий.</note>
 +
 +Чтобы работать с [[Git]] сервером необязательно использовать Gitosis или Gitolite. Для работы Git по протоколу [[SSH]] достаточно установленного демона SSH. В этом случае неудобство проявляется в том, что для каждого нового пользователя GIT сервера нужно заводить системного пользователя ОС и права на чтение/запись этих пользователей совпадают с правами на файлы репозитория (чтобы сделать push пользователь должен обладать правами на запись). Чтобы получить рабочий Git- сервер, к которому несколько человек имеют доступ ― просто добавьте учетные записи SSH на сервер, и положите голый репозиторий в место, к которому эти пользователи имеют доступ на чтение и запись. И всё.
 +
 +**Пример установки связки Git + SSH**. Все репозитории будут храниться в директории /home/gitsrv для которой разрешен полный доступ для всех. Пустой репозиторий создается с ключем --bare. __Для того чтобы приступить к установке любого сервера Git, вы должны экспортировать существующий репозиторий в новый «голый» репозиторий, т.е. репозиторий без рабочего каталога. Обычно это несложно сделать. Чтобы склонировать ваш репозиторий и создать новый «голый» репозиторий, выполните команду clone с параметром —bare. По существующему соглашению, каталоги с голыми репозиториями заканчиваются на .git.__
 +
 +  * На сервере. Создадим пользователя git с домашней директорией /home/gitsrv<file>
 +# useradd git -d /home/gitsrv -m
 +</file>Создаем пустой репозиторий empty в директории empty.git<file>
 +$ mkdir /home/gitsrv/empty.git
 +$ cd /home/gitsrv/empty.git
 +$ git --bare init
 +Initialized empty Git repository in /opt/gitsrv/empty.git/
 +</file>
 +  * На клиенте<file>
 +git clone git@your.server.git:/home/gitsrv/empty.git
 +$ touch README
 +$ git add .
 +git commit -am "First initial commit."
 +git push origin master
 +</file>
 +  * **Всё!!!** <wrap em>Может понадобиться задать права (444) на файлы и директории(775) в репозиториях.</wrap><file bash>
 +chown -R git:git /home/gitsrv/;
 +find /home/gitsrv -type f -exec chmod 444 {} \;
 +find /home/gitsrv -type d -exec chmod 775 {} \;
 +</file>
 +  * Дополнительно на сервере. В качестве дополнительной меры предосторожности можно ограничить возможности пользователя git только действиями связанными с Git с помощью ограниченной оболочки git-shell поставляемой вместе с Git. Для этого нужно заменить интерпретатор команд пользователя на git-shell.<file>
 +$ which git-shell 
 +/usr/bin/git-shell
 +# nano /etc/passwd
 +git:x:1002:1002:git version control:/home/gitsrv/:/usr/bin/git-shell
 +</file>Копируем файлы с разрешенными командами, из всего две list и help.<file>
 +# cp -R /usr/share/doc/git/contrib/git-shell-commands /home/gitsrv
 +# chmod +x git-shell-commands/help
 +# chmod +x git-shell-commands/list
 +</file>
git_i_tolko_ssh.txt · Последнее изменение: 2020/06/13 13:45 (внешнее изменение)