Как создать и настроить ключи SSH для частного хранилища Gitlab на вашем сервере Ubuntu

Когда вы работаете с Git-репозиторием, ваш проект может активно изменяться многими людьми. Некоторым из них нельзя доверять, поскольку они могут быть новыми сотрудниками или что-то в этом роде. В этом случае, если им нужно выполнить git pull на сервере, чтобы обновить изменения коммита на вашем производственном сервере, вы можете не захотеть, чтобы все знали пароль хранилища. Еще один случай, когда вы не хотите предоставлять пароль хранилища каждый раз, когда вы делаете git pull или же git cloneАвтоматизированы развертывания.

Вот почему в Gitlab существует функция «ключи развертывания». Ключом развертывания является SSH-ключ, который хранится на вашем сервере и предоставляет доступ к одному репозиторию Gitlab. Этот ключ прикрепляется непосредственно к хранилищу, а не к личной учетной записи пользователя. В этой статье мы покажем вам шаг за шагом, как вы можете автоматизировать процесс развертывания вашего проекта, размещенного на Gitlab.

1. Найдите или создайте ключ SSH для вашего сервера

Первое, что вам нужно сделать, это проверить, есть ли на вашем сервере открытый ключ, созданный в .ssh каталог пользователя на сервере, поэтому запустите сеанс SSH на вашем сервере и введите следующую команду:

cat ~/.ssh/id_rsa.pub

Это будет автоматически искать в папке вашего пользователя, который в нашем случае /home/vagrant/.ssh, если вывод команды показывает строку, начинающуюся с ssh-rsa, то у вас уже есть ключ SSH, который вы можете использовать для добавления в свой репозиторий, поэтому Вы можете перейти к шагу 2. Если вместо этого вы получите вывод: cat: ~ / .ssh / id_rsa.pub: такого файла или каталога нет, то сначала вам нужно будет создать ключ SSH. Вы можете создать ключ SSH в Ubuntu через SSH с помощью следующей команды (сначала перейдите в каталог .ssh и введите:)

ssh-keygen -t rsa

Чтобы упростить процесс, мы не будем добавлять ключевую фразу для ключа SSH, поэтому, как уже упоминалось в мастере создания, просто нажмите ввод, чтобы не использовать ключевую фразу:

Генерация ключа SSH через SSH

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

2. Настройте SSH-клиент, чтобы найти ваш частный SSH GitLab на сервере

В качестве следующего шага вы должны установить, что при клонировании из Gitlab ключ развертывания должен использоваться в качестве аутентификации вместо имени пользователя и пароля. Для этого вам необходимо убедиться, что ssh-agent включается с помощью следующей команды:

eval $(ssh-agent -s)

Затем вы можете продолжить добавлять свой ключ в реестр SSH, используя следующую команду:

# Add your private key
ssh-add ~/.ssh/id_rsa

Чтобы сохранить эти настройки, вам нужно сохранить их в файле конфигурации. Обычно на клиентах OpenSSH вы можете настроить это в ~/.ssh/config файл. Если файл не существует, вы можете создать его:

# Go to SSH directory
cd ~/.ssh/
# Create the config file
# alternatively create the file using SFTP
# or in the way you want, we are using touch
touch config

И зарегистрируйте свой ключ в файле. В этом уроке мы добавляем один ключ SSH с веб-сайта Gitlab (не являющаяся самостоятельной версией), поэтому содержимое нашего файла конфигурации будет:

# GitLab.com server
Host gitlab.com
RSAAuthentication yes
IdentityFile ~/.ssh/id_rsa

Поскольку у вас может быть несколько проектов на одном сервере или в проекте, который использует разные репозитории, которые необходимо обновить, вы можете без проблем реализовать несколько ключей SSH в одном файле, следуя обозначениям:

# GitLab.com server
Host gitlab.com
RSAAuthentication yes
IdentityFile ~/.ssh/config/private-key-filename-01
# Private GitLab server
Host gitlab.mycompany.com
RSAAuthentication yes
IdentityFile ~/.ssh/config/private-key-filename

3. Добавьте ключ сервера в качестве ключа развертывания в конфигурации репозитория.

Теперь вам нужен открытый ключ вашего сервера (созданный на шаге 1), на этом шаге вы говорите Gitlab: «Эй, если кто-то использует этот SSH-ключ для клонирования, позвольте ему это сделать». Вы можете получить содержимое открытого файла с помощью текстового редактора через SFTP или просто распечатав вывод файла с помощью SSH, используя следующую команду:

cat ~/.ssh/id_rsa.pub

Это вывело бы в нашем случае содержимое открытого ключа:

Сохраните эту длинную строку в буфере обмена, так как она понадобится вам для вставки в Gitlab. В качестве следующего доступа к настройкам вашего репозитория в Gitlab, в нашем случае, так как мы используем несамостоятельную версию Gitlab, конфигурация для ключей развертывания находится в https://gitlab.com///settings/repository, Меню для добавления нового ключа развертывания выглядит следующим образом:

Ключи развертывания Gitlab SSH

Здесь вам нужно будет только добавить содержимое id_rsa.pub файл, укажите заголовок и решите, может ли сервер использоваться для передачи изменений или нет (обычно не проверяется, поскольку это производственный процесс). После того, как ключ добавлен в ваш репозиторий, вы сможете теперь клонировать / извлекать свой репозиторий на сервере развертывания.

4. Клонировать и вытащить репозиторий для тестирования

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

Заметка

Не забудьте клонировать через SSH, а не HTTPS, в противном случае вас могут попросить ввести учетные данные.

git clone git@gitlab.com:username/repositoryname.git
# Or once the project is clone, pull changes
git pull origin master

Сделав это, вы, возможно, заметили, что вам не нужно было вводить ни имя пользователя Gitlab, ни пароль благодаря ключу развертывания!

Ссылка на основную публикацию
Adblock
detector