
Пролог
Итак вам надо клонировать репозиторий с компанейского репозитория и git просит какие-то непонятные пароли, ключи.

или вот такая классическая ситуация

Что делать?
Терминология
Чтобы настроить SSH ключи для GIT репозитория надо понимать вот эту фундаментальную терминологию.
1--контекстное меню - правая кнопка мыши.
2--Shell - это компьютерная программа, которая реализует интерфейс командной строки
3--Переменная окружения (environment variable) - текстовая переменная операционной системы, хранящая какую-либо информацию — например, данные о настройках системы.
4--клонировать репозиторий - скопировать файлы с исходниками в файловую систему на локальный жесткий диск.
5--base64 - стандарт кодирования двоичных данных при помощи только 64 символов ASCII. Алфавит кодирования содержит латинские символы A-Z, a-z, цифры 0-9 (всего 62 знака) и 2 дополнительных символа, зависящих от системы реализации. Каждые 6 бит бинарных данных кодируются одним символом. Base64 - это способ передавать любые двоичные данные символами, которые есть на печатных машинках, используя всего 64 кнопки. Base64 нужен чтобы обыкновенные текстовые редакторы при открытии не показывали кракозябры.
6--ключ - это строка текста, которая обычно представляет собой текст в кодировке base64. Физически ключ - это бинарный массив. Обычно 256 байт.
7--аутентификация - процедура проверки подлинности
8--public key (открытый ключ)- ключ который можно показывать. Этот ключ хранится в файле с расширением *.pub. Закодирован в base64.
9--private key(Закрытый ключ ) - ключ, который никому не надо показывать. Хранится в текстовом файле без расширения. Закодирован в base64.
10--passphrase (парольная фраза) - запоминающийся секрет, обычно последовательность слов, используемый для аутентификации вместо традиционного пароля.
11--Asymmetric cryptography (Асимметричная криптография) - метод шифрования или подписания данных с использованием двух разных ключей (закрытого и открытого).
Что надо из софтвера?
Название программы | название exe программы | Версия | Пояснение |
cmd | cmd.exe | 10.0.22631.4751 | терминал командной строки в Windows |
git | git.exe | 2.45.1 | Система контроля версий |
PuTTYgen | puttygen.exe | 0.83 | инструмент для создания пар открытых и закрытых ключей SSH. |
pageant | pageant.exe | 0.83 | агент аутентификации SSH. |
plink.exe | 0.83 | Утилита подключения командной строки. В основном используется для автоматизированных операций, таких как предоставление GIT доступа к репозиторию на удаленном сервере. |
Как водится в IT, у каждой утилиты есть альтернативная утилита и не одна.
Назначение программы | Программа | Альтернатива |
Утилита подключения командной строки. | plink | ssh |
инструмент для создания пар открытых и закрытых ключей SSH. | puttygen | ssh-keygen |
агент аутентификации SSH | pageant | ssh-agent |
plink - Утилита шифрования и дешифрования трафика между компьютерами.
pageant - это менеджер ключей для SSH. Он хранит ваши ключи и сертификаты в памяти, незашифрованные и готовые к использованию ssh. Это избавляет вас от необходимости вводить пароль каждый раз, когда вы подключаетесь к серверу. Он работает в фоновом режиме в вашей системе, отдельно от ssh, и обычно запускается при первом запуске ssh.
puttygen - утилита для генерирования текстовых файлов, содержащих открытый и закрытый ключи в виде текста в кодировке base64
Проверить факт наличия утилиты на PC можно выполнить командой where.
>where pageant
C:\Program Files\PuTTY\pageant.exe
Инструкция
Фаза 1: Синтезировать пару SSH ключей
SSH ключи можно синтезировать утилитой PuTTYgen. Надо нажать на кнопку Generate и поводить мышкой по площади в рамке Key.

Теперь можно придумать passphrase, набрать ее два раза, сохранить открытый ключ, сохранить закрытый ключ. Рassphrase нужна как пароль, чтобы хранить закрытый ключ в зашифрованном виде.

Создаются текстовые файлы с ключами. Для GitLab открытый ключ надо скопировать прямо их окна программы PuTTY Key Generator. Тут важно чтобы не попало ни одного лишнего символа.
Фаза 2: Вставка открытого ключа на сервер GitLab
Надо открыть GitLab, зайти в Edit profile > SSH Keys > Add new key. Вставить в поле Key открытый ключ, придумать подсказку для поля Title и сохранить.

Фаза 3: Настроить GIT
Теперь надо сказать утилите git, что при работе с SSH следует использовать средства программного пакета PuTTY. Надо заставить инструмент командной строки git осознать, что для получения ключа SSH, который должен был использоваться для аутентификации, необходимо использовать инструменты PuTTY. Для этого надо определить переменную окружения GIT_SSH и прописать в нее полный путь до утилиты plink.exe

Фаза 4 Пуск программы agent (Pageant)
При запуске утилиты Pageant не откроется GUI окна. Утилита отобразиться в нижней строке рабочего стола справа в контекстном меню "стрелка вверх". Вы узнаете Pageant по иконке компьютер в шляпе. Pageant тоже открывается через контекстное меню.
Для того чтобы при каждом коммите не набирать пароль придумали Pageant (ssh-agent). Поэтому каждый день при приходе на работу с утра надо выполнить пуск утилиты Pageant, дать ей закрытый пароль и прописать passphrase.

Фаза 5 работа с репозиторием
Вот только теперь можно спокойно работать с удаленным git репозиторием.

Достоинства SSH ключей
1++ В GitLab каждому ключу можно задать время жизни. Например полгода.
2++ Можно создать много ключей: для дома, для офиса, для второго PC.
3++ В GitLab можно отозвать один конкретный ключ без задевания прочих ключей.
Итоги
Удалось настроить SSH соединение для полноценной работы с удалённым GIT репозиторием.

Словарь
Акроним | Расшифровка |
SSH | Secure Shell |
RSA | Rivest, Shamir и Adleman |
CVS | Concurrent Versions System |
Ссылки
№ | Название | URL |
1 | Secure Shell | |
2 | SSH with PuTTY, Pageant and Plink from the Windows Command Line | |
3 | Shell (computing) | |
9 | Инструкция по Plink | |
4 | PuTTYgen | |
5 | Про SSH Agent @skillfactory_school | |
6 | Вы еще не авторизуетесь по ключам? Тогда мы идем к вам @ahmpro | |
7 | ||
8 | ||
9 | Use SSH keys to communicate with GitLab |
Вопросы:
--Почему нельзя просто взять и набрать пароль? Зачем вдруг стали нужны эти открытые и закрытые ключи?