Генерация SSH-ключей для GitHub
Тип Поста

Генерация SSH-ключей для GitHub

Генерация SSH-ключей для GitHub

На данный момент, один из самых популярных репозиториев для системы контроля версий 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

  1. Для начала создания ключей введем следующую команду в Git консоль:
    ssh-keygen -t rsa -b 4096 -C "ВАШ_EMAIL@mail.com"
    В данном случае, E-mail будет использован как метка для удобства в дальнейшем использовании.
  2. Далее можно указать путь для сохранения ключей. Или нажать Enter, чтобы установить в место, предлагаемое по умолчанию. В моем случае это будет C:/Users/sbb/.ssh/id_rsa
  3. Теперь Git попросит нас ввести любую ключевую фразу для более надежной защиты вашего пароля. Можно пропустить этот этап просто нажав Enter:
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:

Итак, мы сгенерировали SSH-ключи и теперь перейдем к следующему этапу.

Добавление созданных SSH-ключей в SSH-агент

  1. Сперва убедимся, что SSH-агент включен.
    Введем в консоли Git команду:
    eval "$(ssh-agent -s)"
    Это запустит работу агента в фоновом режиме. После ввода этой команды, в консоли должно появиться id запущенного процесса.
    Примерно так:
    Agent pid 4036
  2. Добавим 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 аккаунт

  1. Первым делом скопируем созданный SSH-ключ в буфер обмена командой:
    clip < ~/.ssh/id_rsa.pub
    Или можно открыть файл с ключом в любом редакторе и скопировать вручную. Файл находится в директории C:/Users/ВАШЕ_ИМЯ/.ssh/id_rsa.pub
  2. Откроем настройки своего аккаунта на GitHub и перейдем в раздел SSH and GPC keys
  3. Нажмем на кнопку New SSH key
  4. Добавим в поле Title нужное вам название этого ключа, например, My New Key
  5. Вставим из буфера обмена в поле Key наш ключ
  6. И нажмем кнопку Add SSH key
git-ssh-01

Проверим, что все нами сделано верно, опять введя в консоль Git команду клонирования удаленного репозитория:

git clone git@github.com:sbogdanov108/template.git

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

git-ssh-02

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

Поделиться

7 комментариев

Юрий Большое спасибо за толковое изложение. Бился как рыба об лёд, пока не набрёл на Ваш сайт.

Оставить комментарий

Вы можете использовать следующие HTML-теги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
Обязательно к заполнению