Ssh key github windows

SSH-протокол на GitHub

В этой статье рассказывается, как настроить на Windows SSH-протокол для обмена данными с GitHub-репозиторием.
SSH – самый распространенный протокол при работе с Git. В то время как при отправке данных (команда push) на сервер через протокол HTTP приходится вводить имя и пароль (по крайней мере, в первый раз), при работе через SSH-протокол можно настроить аутентификацию с помощью пары SSH-ключей.

Что же это за пара ключей? Один – закрытый ключ, он хранится в вашей локальной папке пользователя C:/users/имя/.ssh/, а другой – открытый ключ, он хранится на сервере GitHub.

Где взять ключ

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

Если ключ есть

Чтобы понять, есть ли уже ключи на вашем компьютере, проверьте папку

Обычно ключи называются:

  • id_rsa.pub – публичный ключ – тот, который надо хранить на сервере GitHub
  • id_rsa – приватный ключ

В названии может фигурировать dsa вместо rsa.

Если ключи есть, их можно смело использовать.

Если же ключей нет, их легко сгенерировать.

Как сгенерировать ключ

Генератор ключей поставляется вместе с программой Git for Windows. Чтобы его сгенерировать:

  1. Откройте Git Bash и наберите (в кавычках ваш email):
  2. Будет предложено ввести путь до файла и его файла, при этом сразу предлагается правильное расположение и имя по умолчанию:

Чтобы его принять, нажмите Enter.

  • Далее будет предложено ввести passphrase (пароль). Это дополнительная защита, и если вы ее поставите, то этот пароль придется вводить при каждой отправке данных. Обычно дополнительная защита не требуется. Просто нажмите Enter, чтобы отказаться.
  • В заданной папке C:/users/имя/.ssh/ появятся два ключа – публичный и приватный.
  • Теперь наша задача – загрузить публичный ключ в аккаунт на GitHub.

    Загрузка публичного ключа в GitHub-аккаунт

    Что касается приватного ключа, он должен оставаться в вашей пользовательской папке. Если вы сгенерировали ключ в другом месте, переложите его в C:/users/имя/.ssh/, иначе ничего не будет работать.

    А публичный ключ надо загрузить в GitHub-аккаунт. Для этого:

    1. Щелкните юзерпик и в открывшемся меню выберите Settings, а затем вкладку SSH и GPG keys. Щелкните New SSH Key
    2. Придумайте имя ключа и ведите его в первое поле:
    3. И наконец, откройте свой публичный ключ в текстовом редакторе и скопируйте его содержимое во второе поле.

    Проверка

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

    Все должно работать без ввода логина и пароля.

    Обратите внимание, что адрес репозитория при обмене по SSH-протоколу и HTTP-протоколу разный. По HTTP-протоколу мы бы клонировали репозиторий так:

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

    В общем случае URL выглядят так:

    SSH-протокол
    HTTPS-протокол

    Ключи участникам команды

    Технически с любого компьютера, на котором лежит ваш приватный ключ, можно отправлять изменения в репозиторий. Но свой приватный ключ никому отдавать не надо, это неправильная стратегия. Потому что ключ служит для аутентификации, и он должен быть у каждого свой.

    Лучше будет, если каждый участник сгенерирует ключ вышеописанным способом, и вы его добавите в свой GitHub аккаунт как новый ключ. После этого каждый сможет вносить изменения в ваш репозиторий .

    Заключение

    Мы рассмотрели, как сгенерировать ключ и загрузить его в свой GitHub аккаунт.

    Если все участники команды сгенерируют свои ключи вышеописанными способами, а вы загрузите их в свой аккаунт GitHub, то эти участники смогут вносить изменения ваш репозиторий.

    Но существует и другая стратегия обмена изменениями – Forked репозиторий.

    Git — Как в windows установить ssh ключи для github (пошаговая инструкция)

    Сам я не пользуюсь windows для разработки, но мои ученики как правило начинают с windows в качестве основной системы, по этому для них я решил написать эту пошаговую инструкцию.

    Инструкция для github.com

    Предполагается что вы используете OpenServer

    Шаг 1. Сгенерировать ssh-ключи.

    Для этого нужно открыть консоль OpenServer (это просто программа conEmu с указанием системных переменных) и набрать как написано в этой инструкции:

    Шаг 2. Найти где лежат ключи

    При генерации консоль напишет куда упали сгенерированные ключи. Из скриншотов выше видно что они лежат по адресу C:/OpenServer/.ssh вот пусть там и лежат. Находим эту папку и видим там два файла:

    Для удобства я их переименовываю id_rsa в github, а id_rsa.pub в github.txt.

    Шаг 3. Создать конфигурационный файл

    В папке .ssh найденной на шаге 2 создаём файл config (без расширения) с следующим содержанием:

    Шаг 4. Добавить публичный ключ в аккаунт github

    Заходим по этой ссылке https://github.com/settings/keys и нажимаем кнопку «New SSH key». Указываем Title (любой) а в поле Key копируем содержание файла github.txt полученного на шаге 2, нажимаем «Add SSH key» и ещё раз вводим свой пароль от аккаунта github (меры безопасности)

    Вот и всё, теперь можно клонировать из репозиториев с github используя ssh а главное можно пушить в свои репозитории на github без постоянного ввода пароля (как при использовании протокола https)

    4.3 Git на сервере — Генерация открытого SSH ключа

    Генерация открытого SSH ключа

    Как отмечалось ранее, многие Git-серверы используют аутентификацию по открытым SSH-ключам. Для того чтобы предоставить открытый ключ, каждый пользователь в системе должен его сгенерировать, если только этого уже не было сделано ранее. Этот процесс аналогичен во всех операционных системах. Сначала вам стоит убедиться, что у вас ещё нет ключа. По умолчанию пользовательские SSH ключи сохраняются в каталоге

    /.ssh домашнем каталоге пользователя. Вы можете легко проверить наличие ключа перейдя в этот каталог и посмотрев его содержимое:

    Ищите файл с именем id_dsa или id_rsa и соответствующий ему файл с расширением .pub . Файл с расширением .pub — это ваш открытый ключ, а второй файл — ваш приватный ключ. Если указанные файлы у вас отсутствуют (или даже нет каталога .ssh ), вы можете создать их используя программу ssh-keygen , которая входит в состав пакета SSH в системах Linux/Mac, а для Windows поставляется вместе с Git:

    Сначала программа попросит указать расположение файла для сохранения ключа ( .ssh/id_rsa ), затем дважды ввести пароль для шифрования. Если вы не хотите вводить пароль каждый раз при использовании ключа, то можете оставить его пустым или использовать программу ssh-agent . Если вы решили использовать пароль для приватного ключа, то настоятельно рекомендуется использовать опцию -o , которая позволяет сохранить ключ в формате, более устойчивом ко взлому методом подбора, чем стандартный формат.

    Теперь каждый пользователь должен отправить свой открытый ключ вам или тому, кто администрирует Git-сервер (подразумевается, что ваш SSH-сервер уже настроен на работу с открытыми ключами). Для этого достаточно скопировать содержимое файла с расширением .pub и отправить его по электронной почте. Открытый ключ выглядит примерно так:

    Adding a new SSH key to your GitHub account

    To configure your GitHub account to use your new (or existing) SSH key, you’ll also need to add it to your GitHub account.

    Before adding a new SSH key to your GitHub account, you should have:

    After adding a new SSH key to your GitHub account, you can reconfigure any local repositories to use SSH. For more information, see «Switching remote URLs from HTTPS to SSH.»

    Note: DSA keys (SSH-DSS) are no longer supported. Existing keys will continue to function, but you cannot add new DSA keys to your GitHub account.

    Copy the SSH public key to your clipboard.

    If your SSH public key file has a different name than the example code, modify the filename to match your current setup. When copying your key, don’t add any newlines or whitespace.

    Tip: If pbcopy isn’t working, you can locate the hidden .ssh folder, open the file in your favorite text editor, and copy it to your clipboard.

    In the upper-right corner of any page, click your profile photo, then click Settings.

    In the user settings sidebar, click SSH and GPG keys.

    Click New SSH key or Add SSH key.

    In the «Title» field, add a descriptive label for the new key. For example, if you’re using a personal Mac, you might call this key «Personal MacBook Air».

    Paste your key into the «Key» field.

    Click Add SSH key.

    If prompted, confirm your GitHub password.

    Copy the SSH public key to your clipboard.

    If your SSH public key file has a different name than the example code, modify the filename to match your current setup. When copying your key, don’t add any newlines or whitespace.

    Tip: If clip isn’t working, you can locate the hidden .ssh folder, open the file in your favorite text editor, and copy it to your clipboard.

    In the upper-right corner of any page, click your profile photo, then click Settings.

    In the user settings sidebar, click SSH and GPG keys.

    Click New SSH key or Add SSH key.

    In the «Title» field, add a descriptive label for the new key. For example, if you’re using a personal Mac, you might call this key «Personal MacBook Air».

    Paste your key into the «Key» field.

    Click Add SSH key.

    If prompted, confirm your GitHub password.

    Copy the SSH public key to your clipboard.

    If your SSH public key file has a different name than the example code, modify the filename to match your current setup. When copying your key, don’t add any newlines or whitespace.

    Tip: If xclip isn’t working, you can locate the hidden .ssh folder, open the file in your favorite text editor, and copy it to your clipboard.

    In the upper-right corner of any page, click your profile photo, then click Settings.

    In the user settings sidebar, click SSH and GPG keys.

    Click New SSH key or Add SSH key.

    In the «Title» field, add a descriptive label for the new key. For example, if you’re using a personal Mac, you might call this key «Personal MacBook Air».

    Подключение к Git по SSH в Windows без PuttyGen на примере BitBucket

    Много статей (в том числе и на Хабре) посвящено подключению к Git по SSH-ключам. Почти во всех из них используется один из двух способов: либо с помощью puttygen.exe, либо командами ssh-keygen или ssh-add.

    Вчера на одном из компьютеров у меня не получилось сделать это для msysgit ни одним из описанных в интернете способов, и я потратил несколько часов на попытки настроить SSH-доступ, так ни чего и не добившись.

    Как я решил эту проблему — под катом.

    BitBucket всё время ругался на то, что ему требуется подключение с помощью ключа:

    Permission denied (publickey).
    fatal: Could not read from remote repository.
    Please make sure you have the correct access rights and the repository exists.

    Мои попытки сгенерировать ключи, указать пути в переменных среды, привязать ключи к гиту были бесполезны. Либо гит ругался крякозябрами (в случае ssh-agent cmd.exe), либо просто игнорировал всё предложенное.

    Решение оказалось куда удобнее и проще. Достаточно запустить в локальном репозитории GIT GUI Here, и в меню перейти в
    Help -> Show SSH Key:

    Если вы столкнулись с такой проблемой, то скорее всего у вас там ни чего не будет:

    Ну а дальше читать будут, скорее всего, только самые педантичные… Жмём Generate key, видим окно запроса пароля (два раза) для приватного ключа:

    И видим сгенерировавшийся публичный ключ:

    Копируем его, и добавляем вэб-морду ГИТа (в моём случае это BitBucket; ключи там можно добавить в двух местах — в настройках аккаунта и в настройках проекта, нам первый вариант, ибо второй — для деплоя проекта) [Аккаунт]Управление аккаунтомSSH-ключиДобавить ключ:

    Ну, а дальше — просто делаем что нужно — или пуш, или клон (предполагается, что git remote add вы уже сделали сами). Git спросит, можно ли добавить хост к доверенным, и запросит passphrase (пароль приватного ключа). Всё, можно работать.

    PS: Большое спасибо за наводку на решение моему коллеге Ивану!

    Читайте также:  Посмотреть последние строки файла linux
    Оцените статью