Создание и добавление ssh-ключа
SSH-ключи используются для аутентификации вашего компьютера на удалённом сервере, в данном случае на сервере GitLab. Благодаря этому вы можете подтверждать свою личность без ввода пароля.
Чтобы создать ключ, откройте терминал или командную строку и введите команду для генерации ключей ssh-keygen. Если вы хотите сгенерировать их в определённой папке, то введите путь до неё. При генерации ключа можно указать пароль, но это необязательно.
Подробная инструкция по генерации ключей находится по это ссылке docs.gitlab.com/17.0/ee/user/ssh.html
Для генерации ключа желательно использовать консоль Git Bash.
Выполним команду
Если вы хотите сгенерировать ключ в определённой папке со своим названием, то введите путь до неё и название файла.
Так, в моем примере, было изменено название файла с /c/Users/xTCry/.ssh/id_ed25519
на /c/Users/xTCry/.ssh/id_git_ystu
При генерации ключа можно указать пароль, который будет запрашиваться каждый раз при использовании ssh, но это необязательно (просто нажать Enter).
Как мы можем видеть в сообщении, что в указанной папке у нас появится два файла с ключами — приватный (id_git_ystu
) и открытый (id_git_ystu.pub
).
Добавлять в GitLab нужно второй файл с расширением .pub
. Откройте его в текстовом редакторе и скопируйте содержимое в буфер обмена.
Или выполните в консоли команду cat
с указанием пути до публичного ключа.cat /c/Users/xTCry/.ssh/id_git_ystu.pub
Перейдите на страницу добавления вашего ssh-ключа на GitLab через меню настроек профиля и пункт Ключи SSH
.
Нажмите на кнопку добавления ключа
Публичный ключ добавляем в свой профиль
Теперь вы можете работать со своими проектами в git через ssh подключение, а не только https с авторизацией по логину/паролю.
Проверим, что ssh успешно подключается к нашему GitLab пространству.
Выполните команду в Bash
консоли для простого подключения к ssh GitLab сервера
Если подключение прошло успешно и вывод содержит следующее, то всё отлично и можете клонировать/пушить и пуллить проекты
PTY allocation request failed on channel 0
Welcome to GitLab, @ivanovaa.20!
Connection to git.ystu.ru closed.
Если же при подключении у вас запрашивается ввод пароля, то значит наш приватный ключ не был обнаружен ssh-агентом или конфигом.
Тогда нам следует настроить конфиг подключения ssh
Для начала можно проверить, что мы можем подключиться по конкретному ключу.
Выполните команду (в аргумент -i передается путь к сгенерированному приватному ключу). Если пир генерации ключа был указан другой путь и/или название файла, то замените на свое.
Если подключение было успешным, то можно приступить к настройке конфига, чтобы не указывать путь к ключу каждый раз.
Выполните команду nano ~/.ssh/config
для редактирования файла в Bash
консоли.
Или можете открыть этот файл в любом редакторе по пути (Windows) C:\Users\<username>\.ssh\config
Предположим, что мы работаем через консоль
Нам надо добавить в этот файл следующее содержимое
В параметре IdentifyFile
указывается путь к нашему приватному ключу. Если при генерации ключа вы не изменяли путь и/или название, то вносить изменения не надо.
Если вы также указали название ключа как в примере на id_git_ystu, то надо изменить IdentityFile ~/.ssh/id_ed25519
на IdentityFile ~/.ssh/id_git_ystu
и сохраняем файл.
Чтобы сохранить файл в редакторе nano, нужно нажать следующее сочетание клавиш: Ctrl+X
, чтобы выполнить выход; потом нажать Y
, чтобы подтвердить, что мы хотим сохранить изменения, а потом Enter
.
Теперь можно снова попробовать выполнить команду
И убедиться, что подключение по нужному ключу произошло успешно