Pull to refresh

Настройка SSH для коммитов в репозиторий

Level of difficultyEasy
Reading time4 min
Views2K

Пролог

Итак вам надо клонировать репозиторий с компанейского репозитория и 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

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

Ссылки

Вопросы:

--Почему нельзя просто взять и набрать пароль? Зачем вдруг стали нужны эти открытые и закрытые ключи?

Only registered users can participate in poll. Log in, please.
Вы клонировали git репозиторий через ssh?
81.82% да18
18.18% нет4
22 users voted. 1 user abstained.
Only registered users can participate in poll. Log in, please.
В какой программы вы генерируете ssh ключи?
75% ssh-keygen18
29.17% PuTTY7
0% TeraTerm0
8.33% другое2
24 users voted. 1 user abstained.
Tags:
Hubs:
+2
Comments16

Articles