Поиск по сайту:

Как настроить частный сервер Git на VPS


Введение

В этом руководстве показано, как настроить полноценный Git-сервер с использованием ключей SSH для аутентификации. У него не будет веб-интерфейса, это будет просто установка Git и настройка вашего доступа к нему. Хорошо используйте хост \git.droplet.com\ вместо домена, который вы будете использовать для своего VPS.

Это может быть отличным вариантом, если вы хотите сохранить свой код в тайне во время работы. Несмотря на то, что открытый исходный код является статус-кво, бывают случаи, когда вы не хотите, чтобы ваш код был в свободном доступе. Например, если вы разрабатываете мобильное приложение, особенно платное. Имейте в виду, что этот код может быть прочитан кем угодно, если он знает URL-адрес, который следует использовать для клона, но только в том случае, если он его знает.

Есть одна серьезная проблема для многих, и это веб-интерфейс к вашим репозиториям. GitHub делает это на удивление хорошо. Есть приложения, которые вы можете установить, такие как Goblet. Мы не рассматриваем их в этом руководстве, но если вы в значительной степени полагаетесь на графический интерфейс, вы можете просмотреть их и подумать об установке одного из них, как только вы закончите установку своего Git-сервера.

Создайте пару ключей SSH

Во-первых, нам нужно сгенерировать пару ключей SSH. Если вы используете Mac или Linux, вы можете просто ввести следующую команду в терминале, но замените адрес электронной почты на свой:

ssh-keygen -C "youremail@mailprovider.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/flynn/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again: 
Your identification has been saved in foo_rsa.
Your public key has been saved in foo_rsa.pub.
The key fingerprint is:
ab:cd:ef:01:23:45:67:89:0a:bc:de:f0:12:34:56:78 flynn@en.com
The key's randomart image is:
+--[ RSA 2048]----+
|    o+-+  ..     |
|  E o            |
|   . ++.o..      |
|    o o H .      |
|   . .   =       |
|    . =o.o=      |
| o .             |
|  .              |
|     = o  .      |
+-----------------+

Я настоятельно рекомендую поставить пароль на ключевые файлы, это еще один уровень безопасности и имеет минимальное влияние. Если вы используете операционную систему на базе Windows, существуют инструменты для создания пар ключей, такие как PuTTY Gen, хотя в нем есть заявление об отказе от ответственности, что вам необходимо свериться с вашими местными законами, прежде чем использовать его, поскольку в некоторых странах его использование запрещено. Если это не так, вы можете войти в свой VPS, создать пару ключей и загрузить id_rsa и id_rsa.pub для собственного использования.

Далее на VPS понадобится пользователь именно для Git. Большинство людей просто создадут пользователя с именем \Git\, и это то, что хорошо подходит для этого руководства, но не стесняйтесь называть этого пользователя как хотите.

Настройте пользователя Git и установите Git на свой VPS

Войдите в свой VPS и получите root*:

su -

*Некоторым людям неудобно использовать root таким образом. Если ваш VPS настроен на использование sudo, сделайте это.

Добавьте пользователя Unix (не обязательно с именами пользователей Git) для работы с репозиториями:

useradd git

Затем дайте вашему пользователю Git пароль:

passwd git

Теперь это так же просто, как:

  • CentOS/Fedora: yum install git
  • Ubuntu/Debian: apt-get install git

Добавьте свой SSH-ключ в список доступа

На этом этапе вы захотите войти в систему как пользователь Git. Если вы еще не вошли в систему под этим пользователем, используйте эту команду, чтобы переключиться на него:

su git

Теперь вам нужно загрузить файл id_rsa.pub в домашний каталог пользователей Git. Как только вы это сделаете, нам нужно сообщить демону SSH, какие ключи SSH принимать. Это делается с помощью файла авторизованных ключей, который находится в точечной папке \ssh\. Чтобы создать это, введите:

mkdir ~/.ssh && touch ~/.ssh/authorized_keys

Примечание. Использование двойного & в вашей команде связывает их, поэтому он сообщает системе выполнить первую команду, а затем вторую. Использование тильды в начале пути скажет системе использовать ваш домашний каталог, поэтому ~ станет /home/git/ для вашего VPS.

Мы собираемся использовать команду cat, которая возьмет содержимое файла и вернет его в командную строку. Затем мы используем модификатор >>, чтобы что-то сделать с этим выводом, а не просто распечатать его в вашей консоли. Будьте осторожны с этим, так как один > перезапишет все содержимое второго указанного вами файла. Двойной > добавит его, поэтому убедитесь, что вы знаете, что хотите сделать, и в большинстве случаев будет проще просто использовать \>>\, чтобы вы всегда могли удалить то, что вы добавляете, а не пытаться восстановить то, что вы перетертый.

Каждая строка в этом файле является записью для ключа, который вы хотите иметь доступ к этой учетной записи. Чтобы добавить ключ, который вы только что загрузили, введите следующее, заменив :

cat .ssh/id_rsa.pub | ssh user@123.45.56.78 "cat >> ~/.ssh/authorized_keys"

Теперь вы можете увидеть ключ там, если вы используете cat в авторизованном ключевом файле:

cat ~/.ssh/authorized_keys

Если вы хотите добавить других в свой список доступа, они просто должны предоставить вам свой ключ id_rsa.pub, и вы добавляете его в файл авторизованных ключей.

Настройте локальный репозиторий

Это довольно простой процесс, вы просто вызываете команду Git и инициализируете пустой репозиторий в любом каталоге, который вам нравится. Допустим, я хочу использовать «Мой проект» в качестве названия проекта. При создании папки идентификатор использует все строчные буквы, заменяет все пробелы дефисами и добавляет \.git\ к имени. Так \Мой проект\ становится \мой-проект.git\.

Чтобы создать эту папку как пустой репозиторий Git:

git init --bare my-project.git

Вот и все! Теперь у вас есть репозиторий Git, настроенный на вашем VPS. Давайте перейдем к тому, как использовать его на локальном компьютере.

Использование вашего Git-сервера с локального компьютера

В Linux или Mac OS вам необходимо изменить удаленный источник на только что созданный сервер. Если у вас уже есть локальное репо, которое вы хотите отправить на сервер, измените удаленное с помощью этой команды:

git remote set-url origin git@git.droplet.com:my-project.git

Если вы настраиваете новый репозиторий, используйте это:

git init && git remote add origin git@git.droplet.com:my-project.git

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

Но что, если вы хотите, чтобы несколько доверенных лиц имели доступ к этому серверу, и вы хотите, чтобы все было просто, отсортировав их по именам ваших пользователей? Простой и эффективный способ сделать это — создать папку с именем каждого человека, поэтому в домашней папке для вашего списка пользователей Git введите:

mkdir user1 user2

Теперь, когда вы укажете удаленный репозиторий, это будет выглядеть так:

git remote add origin git@git.droplet.com:user1/user-project.git