Как настроить частный сервер 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