Настройка приватного Git-репозитория

Приватный git-репозиторий – отличный способ скрыть код в процессе разработки.  Открытый исходный код, как правило, стремится к статус-кво, но иногда у разработчика есть необходимость запретить свободный доступ к коду ( к примеру, при разработке платного мобильного приложения). Имейте в виду, открытый код может быть прочитан любым пользователем, который знает URL-адрес, используемый для клона.

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

Данное руководство описывает настройку полноценного приватного Git-репозитория при помощи SSH-аутентификации. Как уже говорилось, оно не охватывает использование веб-интерфейса, а лишь объясняет установку Git и настройку доступа к нему.

Для приведения примеров руководство использует хост git.server.com; не забудьте заменить данный хост доменом вашего VPS.

Создание пары ключей SSH

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

ssh-keygen -C "user_email@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.

Затем виртуальный выделенный сервер потребует отдельного пользователя для Git. Как правило, для простоты работы такого пользователя называют Git, что и будет сделано в данном руководстве. Но, конечно, для него можно выбрать абсолютно любое имя.

Создание пользователя и установка Git

Войдите на виртуальный выделенный сервер как root*:

su -

*Примечание: некоторые пользователи предпочитают не использовать root для выполнения рутинных задач. В таком случае используется учетная запись с привилегиями sudo.

Создайте нового пользователя (как уже было сказано, необязательно называть его Git) для управления репозиторием.

useradd git

Затем создайте пароль для пользователя git:

passwd git

Теперь можно приступать к установке Git; для этого выполните:

  • CentOS/Fedora:

yum install git

  • Ubuntu/Debian:

apt-get install git

Внесение SSH-ключа в список доступа

На данный момент нужно войти в систему как пользователь git. Используйте эту команду, чтобы перейти к нему:

su git

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

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

Примечание: дважды использованный символ «&» объединяет команды; таким образом, система выполняет сначала первую, а затем вторую команду (без необходимости вводить их по отдельности). Тильда в начале пути (~) говорит системе использовать домашний каталог; то есть, в данном случае символ «~» указывает на /home/git/.

Теперь используйте команду cat, которая выведет содержимое файла в командной строке. Также нужно использовать модификатор «>>» (двойная угловая скобка), чтобы иметь возможность работать с полученным результатом, а не просто вывести его на экран. Будьте внимательны: модификатор «>» (одинарная угловая скобка) полностью перепишет содержимое второго указанного файла, а «>>» позволит добавить в него данные. В большинстве случаев рекомендуется использовать «>>», поскольку удалить внесенные изменения всегда проще, чем восстанавливать файл.

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

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

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

cat ~/.ssh/authorized_keys

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

Создание локального репозитория git

Этот процесс достаточно прост. Нужно всего лишь вызвать команду git  и инициализировать пустой репозиторий в любом каталоге. К примеру, проект называется New Project. При создании папки нужно использовать только нижний регистр, заменить все пробелы дефисами, а также внести в имя расширение .git. Итак, репозиторий New Project будет называться new-project.git.

Чтобы создать папку для пустого  репозитория Git, введите:

git init --bare new-project.git

Готово! Пустой git-репозиторий готов к работе.

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

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

git remote set-url origin git@git.server.com:new-project.git

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

git init && git remote add origin git@git.server.com:new-project.git

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

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

mkdir user1 user2

Затем, указывая удаленный репозиторий, выполните команду:

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

Tags: , , , , , , , ,

Добавить комментарий