Как сгенерировать и использовать ключи SSH в GitLab

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

Особенно при автоматизации CI/CD-конвейеров в GitLab аутентификация по паролю может быть неэффективной и представлять потенциальный риск безопасности. Почему бы не прекратить свое страдание и не переключиться на аутентификацию с использованием ключей Secure Shell (SSH) GitLab? Читайте далее и узнайте как!

К каюсь этого руководства, вы сгенерируете пару ключей SSH, используете ключ для аутентификации и опубликуете новый проект Gitlab.

Необходимые условия

Этот учебник – это практическая демонстрация. Чтобы следовать в нем, убедитесь, что у вас есть следующие требования.

  • Ваша учетная запись GitLab. Если у вас ее еще нет, зарегистрируйтесь бесплатно сначала.
  • A computer to use as your Gitlab SSH client. This tutorial will be using an Ubuntu 20.04 LTS computer but should work with Windows and macOS too.
  • Обновите или установите Git. Последняя версия на момент написания – 2.25.1.

Visual Studio Code (VS Code). В этом учебнике будет использоваться VS Code 1.62.3.

Генерация ключевой пары SSH для Gitlab

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

GitLab поддерживает два типа пар ключей SSH: RSA и ED25519. Но в этом примере вы сгенерируете пару ключей ED25519, поскольку она считается более безопасной чем ключи RSA. Следуйте указанным ниже шагам для создания пары ключей SSH.

1. На вашем рабочем столе откройте терминальное окно и выполните следующую команду. Эта команда открывает вашу домашнюю директорию в VS Code.

code ~

2. В VS Code щелкните Терминал —> Новый терминал.

Opening a new terminal instance in VSCode

3. На терминале VS Code выполните ssh-keygen -t ниже, чтобы создать ключ SSH типа ED25519. Тег комментария -C является необязательным, но рекомендуется, чтобы сделать ваши ключи более узнаваемыми.

ssh-keygen -t ed25519 -C "Gitlab SSH Key"

4. На следующем запросе о том, куда сохранить ключ, нажмите Enter, чтобы принять имя файла по умолчанию. Имя файла должно быть похоже на /home/<username>/.ssh/id_ed25519, где <username> – ваше имя пользователя.

Accepting the default filename

5. Затем оставьте пароль пустым и дважды нажмите Enter. В результате вы создадите пару ключей SSH без пароля.

Leaving the passphrase empty

Вы должны увидеть похожий результат на скриншоте ниже, показывающем местоположение закрытого ключа (id_ed25519) и открытого ключа (id_ed25519.pub).

Открытый и закрытый ключи имеют одинаковое базовое имя файла. Но у открытого ключа есть расширение .pub, в то время как у закрытого ключа нет расширения.

Generating the Gitlab SSH key pair

Добавление SSH-ключа Gitlab в ваш профиль

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

1. Откройте файл вашего открытого ключа в VSCode. В панели исследователя разверните .ssh и щелкните id_es25519.pub. Затем выберите открытый ключ и скопируйте его в буфер обмена.

Copying the public key

2. Теперь откройте веб-браузер, перейдите по адресу https://gitlab.com и войдите в свою учетную запись Gitlab.

3. После входа перейдите в настройки профиля SSH Keys по адресу https://gitlab.com/-/profile/keys.

  • Вставьте открытый ключ, который вы ранее скопировали, в поле Key.
  • Поле Title автоматически заполняется комментарием вашего открытого ключа. Оставьте значение заголовка как есть или введите предпочтительное значение.
  • По желанию укажите дату истечения срока действия в поле Expires at.
  • Наконец, нажмите Добавить ключ.
Adding the Gitlab SSH key to your profile

Использование вашего Gitlab SSH-ключа

На данный момент вы сгенерировали SSH-ключ и загрузили его в свою учетную запись Gitlab. Остается только проверить, работает ли ваш SSH-ключ, используя его для подключения и аутентификации в Gitlab.

Вход

В терминале VS Code подключитесь к своей учетной записи Gitlab, выполнив следующую команду.

ssh -T [email protected]

Предполагая, что вы подключаетесь впервые, команда запрашивает подтверждение подлинности хоста и подтверждение соединения. Введите yes в подсказке и нажмите Enter, чтобы подтвердить.

Обратите внимание, что вам не нужно было вводить имя пользователя и пароль для входа? Вместо этого команда ssh автоматически использует ваши SSH-ключи для аутентификации. После успешного входа вы должны увидеть приветственное сообщение: ” Добро пожаловать в Gitlab @username!“.

Logging in to Gitlab via SSH

Публикация нового проекта

Вы подтвердили, что ваш Gitlab SSH-ключ работает и позволяет вам успешно аутентифицироваться. Но работает ли он также, когда вы взаимодействуете с Gitlab через Git? Почему бы не проверить, опубликовав новый репозиторий Gitlab?

1. Сначала инициализируйте конфигурацию Git и настройте ее с использованием имени пользователя и адреса электронной почты вашей учетной записи Gitlab. В терминале VS Code выполните команды git config ниже, чтобы указать ваше имя пользователя и адрес электронной почты Gitlab соответственно.

git config --global user.name "your_username"
git config --global user.email "[email protected]"

Выполненная вами команда должна обновить или создать файл ~/.gitconfig с предоставленной вами информацией.

Initializing the Git configuration

2. Затем создайте папку в домашнем каталоге для вашего нового репозитория. Назовите новую папку my-first-project.

Имя папки также станет именем вашего проекта в репозитории Gitlab.

# Создайте новую папку
mkdir ~/my-first-project
# Измените рабочий каталог на новую папку
cd ~/my-first-project

3. Инициализируйте репозиторий, выполнив следующую команду. Обязательно замените <username> на ваше имя пользователя Gitlab.

git init

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

Initializing a new repository

4. Затем укажите адрес удаленного Git-репозитория для вашего проекта. Этот адрес репозитория определяет, будете ли вы аутентифицироваться с помощью ключей SSH или с именем пользователя и паролем.

Найдите синтаксис ниже, где <username> – ваше имя пользователя Gitlab, а <project-name> – имя репозитория Gitlab. Обратите внимание, что адрес репозитория начинается с [email protected], что указывает на аутентификацию с использованием ключа SSH, а не имени пользователя и пароля.

git remote add origin git@gitlab.com:<username>/<project-name>.git

Предположим, что имя пользователя в Gitlab – kevin, а название репозитория – my-first-project. Теперь выполните команду в терминале следующим образом.

git remote add origin git@gitlab.com:kevin/my-first-project.git

5. Выполните следующую команду, чтобы создать пустой файл в вашем репозитории с названием README.md.

touch README.md

6. Откройте файл README.md для редактирования и вставьте следующее содержимое в файл. После редактирования сохраните файл. My first project to demonstrate Gitlab SSH keys.

My first project to demonstrate Gitlab SSH keys.
Creating a file and adding content

7. Теперь скажите Git добавить новый файл README.md в репозиторий и зафиксировать изменения.

git add README.md
git commit -m "My first commit"

Вы должны увидеть аналогичный вывод, как показано ниже.

Adding a file and committing changes to the repository

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

git push --all origin

Как вы можете видеть ниже, создание проекта прошло успешно, и запросов учетных данных не было! Git использовал ваши SSH-ключи для аутентификации в Gitlab.

Creating a repository in Gitlab

9. Наконец, подтвердите, что ваш новый проект Gitlab существует онлайн. Используя ваш браузер, перейдите по ссылке https://gitlab.com/dashboard/projects, чтобы увидеть список ваших существующих проектов. Затем вы должны увидеть название my-first-project в списке.

Viewing the Projects list in Gitlab

10. Кроме того, нажмите на название проекта, и вы должны увидеть файл README.md и его содержимое на экране.

Viewing the README file

Заключение

Поздравляю с тем, что вы добрались до этого момента в данном руководстве! За шаг за шагом вы узнали, как создавать и использовать SSH-ключи для безопасного развертывания контроля версий в вашем репозитории GitLab.

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

Вы уже использовали аутентификацию по SSH-ключу в GitLab ранее? Каково это было? Рекомендуете ли вы другим использовать SSH-ключи, или есть какие-то причины, по которым им следует избегать? Дайте нам знать.

Source:
https://adamtheautomator.com/gitlab-ssh/