Часто компании сталкиваются с необходимостью развернуть 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
После этого мы можем подключаться к серверу без использования пароля.
Делаем 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 репозиторий на своём сервере. Проверили его работоспособность.
Накодил