Ключи SSH

Ключи SSH в Git используются для аутентификации при доступе к удаленным серверам через протокол Secure Shell (SSH). Они обеспечивают безопасный способ передачи данных между вашим компьютером и сервером, на котором хранится репозиторий Git.

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

Для создания SSH ключей по алгоритму RSA откройте командную строку с правами администратора и введите следующую команду:

	ssh-keygen -t rsa -C "your_email@example.com"

где:

  • ssh-keygen - это команда для создания SSH ключей;

  • -t rsa - указывает на тип ключа, который вы хотите создать. RSA - это наиболее распространенный тип ключа;

  • -C your_email@example.com - это комментарий, который будет привязан к вашему ключу. Вы можете указать здесь свой адрес электронной почты или любое другое описание.

Далее, если не хотите менять расположение создаваемых ключей и задавать кодовое слово, три раза нажмите Enter:

Enter file in which to save the key (C:\Users\<your_username>/.ssh/id_ecdsa):
Enter passphrase (empty for no passphrase):

Для создания пары ключей другой криптографической схемы цифровой подписи можно использовать следующие команды:

  • для схемы цифровой подписи, основанной на эллиптической кривой Curve25519 и хэш-функции SHA-512:
  ssh-keygen -t ed25519
  • для схем цифровой подписи, основанных на алгоритме ECDSA и хэш-функции SHA-2
  ssh-keygen -t ecdsa -b 256
  ssh-keygen -t ecdsa -b 384
  ssh-keygen -t ecdsa -b 521

Добавление SSH ключа в настройках учетной записи

Чтобы клонировать репозиторий, необходимо добавить открытый SSH ключ (обычно он имеет расширение .pub, например id_rsa.pub).

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

добавление ключей SSH, шаг 1

На вкладке SSH ключи нажмите Добавить SSH ключ:

добавление ключей SSH, шаг 1

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

cat ~/.ssh/id_rsa.pub

На открывшейся странице следует ввести произвольное название своего ключа и вставить содержимое открытого (публичного) ключа:

добавление ключей SSH, шаг 2

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

Ключи развертывания (deploy keys) генерируются так же, как обычные ключи SSH. Но если обычные SSH-ключи хранятся в настойках учетной записи и используются для работы со всеми ее репозиториями, то ключи развертывания хранятся в настройках отдельных репозиториев и применяются для работы с этими отдельными репозиториями.

Ключи развертывания используются для автоматизации процесса развертывания, обеспечивая дополнительную безопасность, так как не предоставляют полного доступа к репозиторию (опционально).

Добавление SSH ключа в настройках репозитория

  1. В профиле репозитория > Настройки > Ключи развертывания нажмите Добавить.

    Пример:

  2. Заполните поле Имя ключа, вставьте содержимое публичного ключа в поле Значение, нажмите Добавить.

    Пример:

    На вкладке Ключи развертывания отобразится новый ключ.

Ключи развертывания с правами на запись

Ключи развертывания по умолчанию доступны только для чтения.

Для разрешения на запись и отправки коммитов создайте новый ключ, на форме создания отметьте чекбокс Разрешить запись.

Пример:

Чекбокс добавления ключа развертывания

Требования к ключам развертывания

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

Проверка существующих SSH ключей

Чтобы проверить наличие уже сгенерированных ключей на вашем компьютере, введите в консоли git:

ssh-agent -s

Пример результата команды при наличии ключей:

SSH_AUTH_SOCK=/tmp/ssh-40ZRlMnJMhEY/agent.1794; export SSH_AUTH_SOCK;
SSH_AGENT_PID=1795; export SSH_AGENT_PID;
echo Agent pid 1795;

В данном случае, результат команды показывает, что был создан SSH-агент с PID (процессным идентификатором) 1795 и что он использует сокет /tmp/ssh-40ZRlMnJMhEY/agent.1794 для связи с клиентами.

Расположение ключей:

  • в ОС Windows ключи могут располагаться по адресу C:\Users\<your_username>\.ssh;
  • в ОС Linux - /home/<your_username>/.ssh (директория может быть скрытой).

Чтобы открыть файловый менеджер ОС Linux в папке с ssh ключами выполните:

cd ~/.ssh
xdg-open .

Подключение удаленного репозитория по SSH

Для переподключения удаленного репозитория по SSH выполните команду:

git remote set-url origin ssh://git@gitverse.ru:2222/<username>/<repository_name>

Вместе с тем не обязательно отключать репозиторий от соединения по HTTPS перед подключением по SSH. Достаточно добавить новый URL для подключения по SSH с помощью команды git remote set-url флагом --add. Git позволяет иметь несколько URL для каждого удаленного репозитория и использовать их по вашему усмотрению.

Пример:

git remote set-url --add origin ssh://git@gitverse.ru:2222/<username>/<repository_name>

Другие способы аутентификации Git

Токен авторизации

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

Авторизация по https

Для доступа к удаленному репозиторию по https требуется создать пароль учетной записи. Логин и пароль потребуется вводить при выполнении различных операций с удаленным репозиторием (см. раздел Работа с терминалом).

Для изменения способа авторизации потребуется изменить URL удаленного репозитория.

Дополнительно см. разделы: