Работа c GitHub по SSH под Windows 10

20.02.2018

Теги: GitGitHubSSHWeb-разработкаWindows

Git умеет работать с четырьмя сетевыми протоколами для передачи данных: локальный, Secure Shell (SSH), Git и HTTP. Положительным аспектом использования протокола HTTP(S) является простота настройки. Поэтому при работе с GitHub он используется чаще всего.

$ git remote -v
origin  https://github.com/username/project.git (fetch)
origin  https://github.com/username/project.git (push)

Как настроить работу с репозиторием на GitHub.com по SSH под Windows 10? Для начала посмотрим, какие ssh-ключи уже есть в системе:

$ ls -al ~/.ssh
drwxr-xr-x 1 Evgeniy 197121    0 фев 25 10:26 ./
drwxr-xr-x 1 Evgeniy 197121    0 фев 25 10:25 ../

Ключей еще нет, директория пуста. Сгенерируем ключи командой

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Evgeniy/.ssh/id_rsa):[Жмем Enter]
Enter passphrase (empty for no passphrase):[Вводим пароль для ключа]
Enter same passphrase again:[Вводим пароль для ключа]
Your identification has been saved in id_rsa.
Your public key has been saved in id_rsa.pub.

Сначала необходимо указать расположение файла для сохранения ключа. Просто жмем Enter, чтобы сохранить ключ в файле по умолчанию (~/.ssh/id_rsa). Затем надо дважды ввести пароль для ключа, который можно оставить пустым (в этом случае дважды жмем Enter).

Можно добавить сгенерированный ключ в свой SSH-агент. Агент будет хранить ключ у себя, а все программы (например, ssh) будет обращаться к агенту, что обеспечивает дополнительную безопасность. Включаем SSH-агент командой

$ eval $(ssh-agent -s)
Agent pid 9600

Добавляем в него ключ

$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /c/Users/Evgeniy/.ssh/id_rsa:[Вводим пароль для ключа]
Identity added: /c/Users/Evgeniy/.ssh/id_rsa (/c/Users/Evgeniy/.ssh/id_rsa)

Теперь надо добавить наш ключ в аккаунте GitHub. Авторизуемся и переходим на страницу https://github.com/settings/keys, жмем кнопку «New SSH key» и вставляем содержимое файла ~/.ssh/id_rsa.pub в текстовое поле «Key».

Теперь можно использовать SSH вместо HTTPS. Смотрим, какой должна быть ссылка проекта на GitHub, предварительно выбрав «Use SSH» (вместо «Use HTTPS»):

И выполняем команду:

$ git remote set-url origin git@github.com:username/project.git

Проверяем:

$ git remote -v
origin  git@github.com:username/project.git (fetch)
origin  git@github.com:username/project.git (push)

Чтобы не вводить каждый раз пароль от ключа при работе с репозиторием на GitHub, нужно создать файл C:/Users/UserName/.bashrc и добавить туда следующее:

#!/bin/bash
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

Теперь запрос пароля от ключа будет происходить только один раз, при запуске (каждой новой) консоли.

Все команды выполняются в git bash (командная строка с стиле linux), которая устанавливается вместе с Git для Windows.

Здесь у меня получилось не однозначно, так что решил уточнить. Использовать ssh-агента полезно только в том случае, если для ключа был задан пароль. Если это не так — нужно просто указать git, какой ключ использовать при работе с github.com. Для этого создаем-редактируем файл ~/.ssh/config:

Host github.com
  IdentityFile ~/.ssh/id_rsa
Host some-server
  User evgeniy
  HostName 123.123.123.123
  Port 22
  IdentityFile ~/.ssh/some-server

Поиск: Git • GitHub • SSH • Web-разработка • Windows

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.