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

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


Боковая панель

Связь

git_i_tolko_ssh

GIT и только SSH

Для совместной работы пары человек на закрытом проекте, всё, что вам нужно ― это SSH- сервер и "голый" репозиторий.

Чтобы работать с Git сервером необязательно использовать Gitosis или Gitolite. Для работы Git по протоколу SSH достаточно установленного демона SSH. В этом случае неудобство проявляется в том, что для каждого нового пользователя GIT сервера нужно заводить системного пользователя ОС и права на чтение/запись этих пользователей совпадают с правами на файлы репозитория (чтобы сделать push пользователь должен обладать правами на запись). Чтобы получить рабочий Git- сервер, к которому несколько человек имеют доступ ― просто добавьте учетные записи SSH на сервер, и положите голый репозиторий в место, к которому эти пользователи имеют доступ на чтение и запись. И всё.

Пример установки связки Git + SSH. Все репозитории будут храниться в директории /home/gitsrv для которой разрешен полный доступ для всех. Пустой репозиторий создается с ключем –bare. Для того чтобы приступить к установке любого сервера Git, вы должны экспортировать существующий репозиторий в новый «голый» репозиторий, т.е. репозиторий без рабочего каталога. Обычно это несложно сделать. Чтобы склонировать ваш репозиторий и создать новый «голый» репозиторий, выполните команду clone с параметром —bare. По существующему соглашению, каталоги с голыми репозиториями заканчиваются на .git.

  • На сервере. Создадим пользователя git с домашней директорией /home/gitsrv
    # useradd git -d /home/gitsrv -m

    Создаем пустой репозиторий empty в директории empty.git

    $ mkdir /home/gitsrv/empty.git
    $ cd /home/gitsrv/empty.git
    $ git --bare init
    Initialized empty Git repository in /opt/gitsrv/empty.git/
  • На клиенте
    git clone git@your.server.git:/home/gitsrv/empty.git
    $ touch README
    $ git add .
    git commit -am "First initial commit."
    git push origin master
  • Всё!!! Может понадобиться задать права (444) на файлы и директории(775) в репозиториях.
    chown -R git:git /home/gitsrv/;
    find /home/gitsrv -type f -exec chmod 444 {} \;
    find /home/gitsrv -type d -exec chmod 775 {} \;
  • Дополнительно на сервере. В качестве дополнительной меры предосторожности можно ограничить возможности пользователя git только действиями связанными с Git с помощью ограниченной оболочки git-shell поставляемой вместе с Git. Для этого нужно заменить интерпретатор команд пользователя на git-shell.
    $ which git-shell 
    /usr/bin/git-shell
    # nano /etc/passwd
    git:x:1002:1002:git version control:/home/gitsrv/:/usr/bin/git-shell

    Копируем файлы с разрешенными командами, из всего две list и help.

    # cp -R /usr/share/doc/git/contrib/git-shell-commands /home/gitsrv
    # chmod +x git-shell-commands/help
    # chmod +x git-shell-commands/list
git_i_tolko_ssh.txt · Последние изменения: 2016/10/31 14:06 (внешнее изменение)