Різноманітні системи для зберігання коду як GitHub, BitBucket або Azure DevOps є популярними та зручними інструментами. Використання SSH ключів дозволяє налаштувати безпечний доступ до репозиторіїв. Проте, якщо ви працюєте на операційній системі Windows, потрібно виконати декілька таких додаткових кроків, як запуск сервісу OpenSSH Authentication Agent та налаштування PuTTY authentication agent.
Задача
Необхідно налаштувати підключення по SSH до репозиторію на GitHub з чистої установки Windows 11 Pro. GitHub має докладну документацію, тому я буду давати посилання на опис необхідних кроків із коментарями, що потрібно доробити.
Необхідні інструменти
Я використовую Visual Studio Code, Git та PuTTY.
Покрокова інструкція
Створити SSH ключі
Спочатку необхідно створити пару SSH ключів – відкритий та приватний. Для цього виконаємо команду
ssh-keygen -t ed25519 -N PASSPHRASE -C COMMENT -f "FOLDER\KEYNAME"
де
PASSPHRASE– пароль для використання ключа;COMMENT– коментар, який вказується наприкінці відкритого ключа, щоб його було легше ідентифікувати. Зазвичай я додаю значення в форматіaccount@github.comщоб при необхідності визначити для якого облікового запису було створено ключ.FOLDER\KEYNAME– ім’я та шлях до ключів. По замовчуванню на Windows файли цього створеного ключа зберігаються в папці%HOMEPATH%\.sshіз іменамиid_ed25519таid_ed25519.pub. Проте це може бути незручно, якщо потрібно використовувати декілька облікових записів та різні системи зберігання коду, тому виберемо інформативне ім’я файлу та папку і створимо файлиKEYNAMEтаKEYNAME.pub.
Додати відкритий ключ до GitHub
Використовуємо інструкції:
- Відкрити файл
KEYNAME.pubв Visual Studio Code або текстовому редакторі, скопіювати вміст. - Відкрити налаштування SSH ключів в GitHub, та натиснути New SSH Key.
- В якості імені ключа можна використати, наприклад,
KEYNAME. Оскільки зміст доданого ключа вже відкрити неможливо, ім’я буде нагадування про те, який ключ було використано. - Вставити вміст відкритого ключа.
Замінити ssh на Plink
Для того щоб Git використовував PuTTY агент для підключення по SSH, потрібно додати змінні оточення GIT_SSH та GIT_SSH_COMMAND відповідно до документації Git. Для цього запускаємо налаштування Windows, вводимо в рядку пошуку Environment Variable, натискаємо Edit system environment variables, та додаємо змінні (зверніть увагу на лапки):
GIT_SSH="C:\Program Files\Putty\plink.exe"
GIT_SSH_COMMAND="C:\Program Files\Putty\plink.exe"
Після цього потрібно перезавантажити Windows.
Створити приватний ключ для Pageant
Оскільки використання PASSPHRASE в SSH ключах є прикладом найкращих практик, і кожного разу для підключення потрібно вказувати PASSPHRASE, то в системі Windows можна використати програму Pageant для зберігання розшифрованих ключів.
- Зберегти приватний ключ в *.ppk форматі:
- Запустити програму PuTTYgen, навпроти Load an existent private key file натиснути Load, та вибрати файл
FOLDER\KEYNAME; - Вибрати File | Save private key та зберегти приватний ключ в файлі з назвою
KEYNAME.ppk; - В деяких випадках потрібно зберегти ключ в старій версії 2. Для цього потрібно відкрити вікно налаштувань Key | Parameters for saving key files… та вибрати
PPK file version = 2.
- Запустити програму PuTTYgen, навпроти Load an existent private key file натиснути Load, та вибрати файл
- Запустити програму Pageant:
- Натиснути Add Key, вибрати щойно створений файл
KEYNAME.ppk; - Вказати
PASSPHRASE, ключ буде завантажено. - Зауважимо, що надалі цю операцію буде потрібно робити кожного разу після перезавантаження комп’ютера, до того як почати працювати з репозиторіями на GitHub.
- Натиснути Add Key, вибрати щойно створений файл





Додати ключ до ssh-agent
Щоб додати приватний ключ до ssh-agent, використовуємо інструкції. Додатково:
- Можна відкрити Computer Management консоль, знайти сервіс
OpenSSH Authentication Agent, встановити тип запуску Automatic або Automatic (Delayed Start). Натиснути Start, щоб запустити сервіс. - У вікні PowerShell виконати команди
cd C:\Windows\System32\OpenSSH
ssh-add FOLDER\KEYNAME
вказати PASSPHRASE, ключ буде завантажено. Результат має бути таким
Enter passphrase for FOLDER\KEYNAME:
Identity added: FOLDER\KEYNAME
Перевірити, що ключ додався успішно, можна за допомогою команди, яка покаже додані ключі
ssh-add -l
Після цього командою
ssh -t -vvv git@github.com
перевірити, що відбувається підключення. При цьому вивід має містити текст
debug1: Authentication succeeded (publickey).
Якщо останній рядок містить текст
git@github.com: Permission denied (publickey).
то потрібно ще раз перевірити всі налаштування. Додаткові поради для пошуку помилки можна знайти за цим посиланням.
Клонувати репозиторій
Відкрити Visual Studio Code та виконати команду клонування репозиторію:
git clone git@github.com:USER/REPO.git PROJECT_FOLDER\REPO --progress
Файли з репозиторію мають бути успішно завантажені.
1. Всі використані IP адреси, імена серверів, віртуальних машин, доменів, сайтів є фіктивними та використовуються виключно для демонстрації.
2. Інформація надається «AS IS».
3. Наданий матеріал відображає винятково точку зору автора.