Создание собственного Git — сервера

Часто компании сталкиваются с необходимостью развернуть Git — репозиторий на собственном локальном сервере. В этой статье мы рассмотрим как правильно настроить сервер. Как с помощью ключей настроить подключение к нему по ssh. Создадим репозиторий и поработаем с ним.

Настройка Linux сервера

Подключимся к серверу по ssh. Если на вашем компьютере установлен Linux или вы счастливый обладатель Mac OS, то вы это можете сделать из терминала. На Windows лучше всего использовать Git Bash или, например, ConEmu. У меня сейчас сервер разворачивается на плате Raspbery Pi, на которой установлен Linux. Пользователь pi. IP адрес сервера в локальной сети 192.168.1.19. Подключимся к нему по ssh:

ssh pi@192.168.1.19

После подключения нам надо установить git-core:

sudo apt install git-core

Создание нового пользователя

Для того, чтобы обеспечить большую безопасность, создадим нового пользователя, который не будет включён в sudoers. Назовём его git, но можно выбрать и другое имя:

sudo useradd git

Добавим пароль для нового пользователя:

sudo passwd git

Создадим домашнюю папку для него:

sudo mkhomedir_helper git

В принципе всё. Теперь нам можно отключить соединение по ssh с помощью команды:

exit

Настройка пользователя

Заново войдём, но уже от созданного нами нового пользователя:

ssh git@192.168.1.19

Создадим папку, в которой будут храниться ключи для подключения по ssh:

mkdir .ssh

Создадим папку для нового git репозитория. Репозиторий назову «example»:

mkdir example

Переходим в созданный каталог:

cd example

Инициализируем репозиторий:

git init --bare

Вот и всё, теперь можно отключиться с помощью команды exit и перейти к настройке ключей.

Ключи ssh

На локальном компьютере следует создать ключи для того чтобы подключаться к серверу по ssh без использования пароля. Для этого в терминале воспользуемся командой:

ssh-keygen -t rsa

Создадутся ключи. Следует запомнить путь к ним. Переходим в терминале в папку с ключами. Нас интересует id_rsa.pub. Его нам нужно отправить на сервер в папку .ssh, которую мы создали, переименовав его в authorized_keys. Для этого нам потребуется scp. В Windows её знает как Git Bash, так и ConEmu:

scp id_rsa.pub git@192.168.1.19:~/.ssh/authorized_keys

После этого мы можем подключаться к серверу без использования пароля.

Если мы хотим подключаться с нескольких компьютеров, то надо дописать id_rsa.pub в конец файла authorized_keys. Для этого можно скопировать файл на сервер с помощью scp и, например, добавить его с помощью cat (cat id_rsa.pub >> authorized_keys).

Делаем commit на компьютере и отправляем на сервер

Сервер настроен. Теперь нам нужно сделать первый commit и отправить его на сервер.

Создадим папку репозитория, назовём её также как и на сервере «example». Переходим в Git Bashe в эту папку и выполняем:

git init
git remote add origin git@192.168.1.19:example

Этими командами мы создали локальный git репозиторий и привязали его к серверу.

Теперь нам нужно добавить файлы в репозиторий. Создадим для этого файл «readme.md» с текстом:

# Example
Это тестовый репозиторий

Мы находимся на ветке master. Добавим созданный файл, сделаем commit и отправим его на сервер:

git add readme.md
git commit -m "initial commit"
git push origin master

Вот мы и сделали первый commit и отправили его на сервер!

Клонируем репозиторий

Теперь проверим, будет ли клонироваться репозиторий.

Для этого в Git Bash следует выполнить следующую команду:

git clone git@192.168.1.19:example

Git репозиторий должен быть успешно клонирован. Можно проверить всё с помощью gitk

gitk --all &

Мы создали git репозиторий на своём сервере. Проверили его работоспособность.