Доступ к репозиторию (“классический” Git)#

Доступ к репозиторию осуществляется по ssh.

  1. Все пользователи, которые могут подключиться по ssh к серверу (в настоящее время rundeck, CNAME git.sitefactory.local) и имеют доступ на чтение к папке репозитория (внутри /srv/git/) — могут выполнять git pull.

  2. Аналогично, пользователи с правами на запись на папку репозитория — могут выполнять git push.

  3. Фактически, это пользователи, добавленные в группу git на сервере (iagienko, vhspakovskiy, akazakov).

  4. Для доступа по пп. 1-3 адрес репозитория задаётся по шаблону git.sitefactory.local:/srv/git/ansible.git (либо ssh://git.sitefactory.local:/srv/git/ansible.git

  5. Все остальные могут получить полный доступ (pull/push), подключаясь к серверу как пользователь git.

  6. Для подключения по п. 4 нужно добавить публичный ключ подключающегося в ~/.ssh/authorised_keys пользователя git.

  7. Рекомендуется предварять публичный ключ в п. 5 инструкциями no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty  ssh-rsa ...

  8. Для доступа по пп. 5-7 адрес репозитория задаётся по шаблону git@git.sitefactory.local:/srv/git/ansible.git (либо ssh://git@git.sitefactory.local:/srv/git/ansible.git)

Attention

Дополню. После некоторого опыта использования нужно отметить, что всем имеет смысл подключаться единообразно от имени пользователя git, т.е в соответствии с пп. 5-7. Доступ по пп. 1-3 возможен, но потенциально ведёт к нестыковкам в правах на файлы и невоможности выполнить push из-за отсутствия прав на отдельные файлы.

Для настройки доступа предлагаю на клиенте:

ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_git
vim ~/.ssh/config

Host git.sitefactory.local
    User git
    PreferredAuthentications publickey
    IdentitiesOnly yes
    IdentityFile ~/.ssh/id_ed25519_git

Также можем сократить Host до git, тогда адрес репозитория может быть сокращён до git:/srv/git/ansible.git