![Тип Поста](https://bogdanov-blog.ru/wp-content/themes/blogus/img/types/git.png)
Генерация SSH-ключей для GitHub
![Генерация SSH-ключей для GitHub](https://bogdanov-blog.ru/wp-content/uploads/2016/04/git-ssh.jpg)
На данный момент, один из самых популярных репозиториев для системы контроля версий GitHub, использует аутентификацию пользователей через открытые SSH-ключи. Это позволяет работать с сервисом без ввода логина и пароля, а также удобно производить контроль доступа к своему репозиторию.
Рассмотрим вариант создания и добавления SSH-ключей к своему GitHub аккаунту.
Подготовка
Для начала скачаем и установим клиент GitHub по ссылке https://git-scm.com
Теперь попробуем клонировать существующий репозиторий c GitHub для понимания одной из самых популярных ошибок, возникающих при начале работы с Git. Для этого откроем установленную консоль Git Bash, нажав правую кнопку мыши и выбрав пункт Git Bash Here.
Не забудем предварительно перейти в подготовленный каталог для удобства экспериментов с Git. В моем случае это будет каталог C:/domains/test.
Введем в консоли Git Bash команду клонирования удаленного репозитория с GitHub:
git clone git@github.com:sbogdanov108/template.git
Именно здесь мы столкнемся с фатальной ошибкой скачивания из-за ограничения доступа к GitHub:
Cloning into 'template'...
The authenticity of host 'github.com (192.30.252.130)' can't be established.
RSA key fingerprint is …
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.252.130' (RSA) to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.
Решим эту проблему созданием публичного ключа для GitHub.
Генерация SSH-ключей для GitHub
-
Для начала создания ключей введем следующую команду в Git консоль:
В данном случае, E-mail будет использован как метка для удобства в дальнейшем использовании.ssh-keygen -t rsa -b 4096 -C "ВАШ_EMAIL@mail.com"
- Далее можно указать путь для сохранения ключей. Или нажать Enter, чтобы установить в место, предлагаемое по умолчанию. В моем случае это будет C:/Users/sbb/.ssh/id_rsa
-
Теперь Git попросит нас ввести любую ключевую фразу для более надежной защиты вашего пароля. Можно пропустить
этот этап просто нажав Enter:
Enter passphrase (empty for no passphrase): Enter same passphrase again:
Итак, мы сгенерировали SSH-ключи и теперь перейдем к следующему этапу.
Добавление созданных SSH-ключей в SSH-агент
-
Сперва убедимся, что SSH-агент включен.
Введем в консоли Git команду:
Это запустит работу агента в фоновом режиме. После ввода этой команды, в консоли должно появиться id запущенного процесса.eval "$(ssh-agent -s)"
Примерно так:Agent pid 4036
-
Добавим SSH-ключ в SSH-агент.
Если вы хотите использовать уже существующие ключи, вместо только что сгенерированных, тогда нужно заменить id_rsa при вводе команды в консоли именем существующего файла, содержащий приватный ключ.
В случаем использования только что созданных ключей просто вводим в консоль Git команду:
Как результат, должно появиться в консоли следующее:ssh-add ~/.ssh/id_rsa
Identity added: /c/Users/ВАШЕ_ИМЯ/.ssh/id_rsa (/c/Users/ВАШЕ_ИМЯ/.ssh/id_rsa)
Следующим шагом будет добавление приватного ключа в GitHub аккаунт.
Добавление нового SSH-ключа в GitHub аккаунт
-
Первым делом скопируем созданный SSH-ключ в буфер обмена командой:
Или можно открыть файл с ключом в любом редакторе и скопировать вручную. Файл находится в директории C:/Users/ВАШЕ_ИМЯ/.ssh/id_rsa.pubclip < ~/.ssh/id_rsa.pub
- Откроем настройки своего аккаунта на GitHub и перейдем в раздел SSH and GPC keys
- Нажмем на кнопку New SSH key
- Добавим в поле Title нужное вам название этого ключа, например, My New Key
- Вставим из буфера обмена в поле Key наш ключ
- И нажмем кнопку Add SSH key
Проверим, что все нами сделано верно, опять введя в консоль Git команду клонирования удаленного репозитория:
git clone git@github.com:sbogdanov108/template.git
Через несколько секунд получим на своем локальном компьютере полную копию нужного нам репозитория.
Таким образом единожды проведя операцию создания публичного SSH-ключа и внеся его в свой профиль на GitHub, мы обеспечим себе удобную и безопасную работу с удаленным репозиторием.