Доступ к репозиторию (“классический” Git)
Доступ к репозиторию (“классический” Git)#
Доступ к репозиторию осуществляется по ssh.
Все пользователи, которые могут подключиться по ssh к серверу (в настоящее время
rundeck, CNAMEgit.sitefactory.local) и имеют доступ на чтение к папке репозитория (внутри/srv/git/)— могут выполнятьgit pull.Аналогично, пользователи с правами на запись на папку репозитория — могут выполнять
git push.Фактически, это пользователи, добавленные в группу
gitна сервере (iagienko, vhspakovskiy, akazakov).Для доступа по пп. 1-3 адрес репозитория задаётся по шаблону
git.sitefactory.local:/srv/git/ansible.git(либоssh://git.sitefactory.local:/srv/git/ansible.gitВсе остальные могут получить полный доступ (pull/push), подключаясь к серверу как пользователь
git.Для подключения по п. 4 нужно добавить публичный ключ подключающегося в
~/.ssh/authorised_keysпользователяgit.Рекомендуется предварять публичный ключ в п. 5 инструкциями
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa ...Для доступа по пп. 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