Ключи SSH
Ключи 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 ключи нажмите Добавить SSH ключ:
Содержимое публичного ключа можно скопировать, открыв файл в текстовом редакторе, или сразу скопировать содержимое в буфер через команду в консоли:
cat ~/.ssh/id_rsa.pub
На открывшейся странице следует ввести произвольное название своего ключа и вставить содержимое открытого (публичного) ключа:
Ключи развертывания
Ключи развертывания
Ключи развертывания (deploy keys) генерируются так же, как обычные ключи SSH. Но если обычные SSH-ключи хранятся в настойках учетной записи и используются для работы со всеми ее репозиториями, то ключи развертывания хранятся в настройках отдельных репозиториев и применяются для работы с этими отдельными репозиториями.
Ключи развертывания используются для автоматизации процесса развертывания, обеспечивая дополнительную безопасность, так как не предоставляют полного доступа к репозиторию (опционально).
Добавление SSH ключа в настройках репозитория
Добавление SSH ключа в настройках репозитория
В профиле репозитория > Настройки > Ключи развертывания нажмите Добавить.
Пример:
Заполните поле Имя ключа, вставьте содержимое публичного ключа в поле Значение, нажмите Добавить.
Пример:
На вкладке Ключи развертывания отобразится новый ключ.
Ключи развертывания с правами на запись
Ключи развертывания с правами на запись
Ключи развертывания по умолчанию доступны только для чтения.
Для разрешения на запись и отправки коммитов создайте новый ключ, на форме создания отметьте чекбокс Разрешить запись.
Пример:
Требования к ключам развертывания
Один и тот же ключ развертывания можно использовать одновременно в разных репозиториях, но запрещено привязывать один и тот же 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
Другие способы аутентификации Git
Токен авторизации
Для работы с удаленным репозиторием без добавления SSH ключей можно однократно добавить токен авторизации, подробно см. в разделах:
Авторизация по https
Для доступа к удаленному репозиторию по https требуется создать пароль учетной записи. Логин и пароль потребуется вводить при выполнении различных операций с удаленным репозиторием (см. раздел Работа с терминалом).
Для изменения способа авторизации потребуется изменить URL удаленного репозитория.
Дополнительно см. разделы: