Як налаштувати автентифікацію без пароля для приватного сховища GitHub?

Постійне виконання одних і тих самих задач може бути втомливим та демотивуючим для програмістів. Чи не так?

Однією з таких рутинних операцій є взаємодія з приватним репозиторієм на GitHub. Якщо ви розумієте, про що йдеться, і шукаєте оптимальне рішення, то ви потрапили за адресою. Після ознайомлення з цією статтею ваші пошуки завершаться.

Отже, розглянемо, як отримати доступ до приватного сховища GitHub без необхідності постійно вводити пароль. Перейдемо одразу до справи.

Існує два основних способи доступу до репозиторіїв GitHub: через HTTPS та SSH. Більшість користувачів зазвичай обирають HTTPS. Однак варто знати, що це не найефективніший підхід для роботи з приватними сховищами.

Під доступом мається на увазі клонування репозиторію, завантаження змін, оновлення локальної копії та інші дії, пов’язані зі синхронізацією вашого локального репозиторію з віддаленим.

З публічними репозиторіями зазвичай не виникає ніяких проблем. Але при роботі з приватними сховищами потрібно проходити аутентифікацію. Існує кілька способів це зробити.

Почнемо з найпоширенішого…

Використання HTTPS

Можливо, ви вже знайомі з методом HTTPS і шукаєте альтернативи. Давайте швидко розглянемо, як за його допомогою отримати доступ до приватного репозиторію.

  • Скопіюйте URL-адресу вашого приватного репозиторію.

Приватний репозиторій GitHub

  • Відкрийте термінал або командний рядок на своєму комп’ютері.
  • Вставте скопійовану URL-адресу в команду git clone, щоб клонувати приватне сховище.
  • Переконайтеся, що URL-адреса відповідає вашому приватному репозиторію.
  • Система попросить вас підтвердити свою особу. Вам потрібно буде ввести облікові дані GitHub.
  • Спершу потрібно ввести своє ім’я користувача GitHub. Введіть його і натисніть Enter.

Ім’я користувача для аутентифікації

  • Далі потрібно ввести пароль. Введіть його і натисніть Enter.

Пароль для аутентифікації

Готово! Ви успішно клонували приватний репозиторій, використовуючи метод HTTPS. Тепер внесіть зміни у сховище, зафіксуйте їх і відправте на віддалений сервер.

Що ви помітили?

Система знову просить аутентифікацію.

Аутентифікація при Push

Чи не втомлює постійно вводити свої облікові дані при кожній взаємодії з приватним репозиторієм?

Звісно, це незручно.

Необхідність постійно вводити дані користувача GitHub є не тільки дратівливою, але й сповільнює робочий процес.

Існує декілька способів вирішити цю проблему. Одним з найбільш ефективних є використання SSH. Проте існують і інші підходи. Розглянемо їх усі по порядку.

Конфігурація .git

Вся інформація про історію змін у ваших репозиторіях зберігається в каталозі .git. Ця папка є прихованою. Вона містить файл конфігурації, де можна налаштувати різні параметри. Але загалом цей метод не рекомендується.

Можна клонувати приватне сховище, додавши ім’я користувача та пароль безпосередньо до URL-адреси репозиторію, як показано нижче.

git clone https://<strong>username:password</strong>@github.com/<strong>username</strong>/<strong>repository_name</strong>.git

Замініть username, password і repository_name на відповідні значення. Оскільки ми вказали облікові дані в URL-адресі, система не буде вимагати аутентифікацію, як це було раніше.

Таким чином, ми змінимо конфігурацію репозиторію, щоб використовувати цей метод аутентифікації. Давайте подивимося, як позбутися повторної аутентифікації, оновивши URL-адресу.

  • Відкрийте папку .git у клонованому репозиторії.

Папка .git

  • Ви знайдете файл з назвою config. Відкрийте його за допомогою будь-якого текстового редактора.
  • Там буде рядок з URL-адресою нашого репозиторію, як показано нижче.

Посилання на репозиторій у конфігурації

  • Оновіть URL-адресу, додавши своє ім’я користувача та пароль, як показано вище.

Оновлена URL-адреса репозиторію

Тепер знову внесіть зміни в репозиторій, зафіксуйте їх та відправте на віддалений сервер.

Що ви спостерігаєте?

Цього разу система не повинна вимагати ваші облікові дані GitHub. Отже, ми вирішили проблему, оновивши конфігурацію репозиторію.

Як ви могли помітити, цей метод є небезпечним, оскільки ваші облікові дані стають відкритими. Крім того, він не спрацює, якщо ваш пароль GitHub містить символ “@”.

З огляду на ці недоліки, давайте проігноруємо цей метод та перейдемо до наступного.

Credential.helper

Credential.helper дозволяє зберігати облікові дані у файлі ~/.git-credentials на постійній основі.

Облікові дані зберігаються після їх першого введення. При подальших спробах доступу до приватного репозиторію система не буде запитувати облікові дані, якщо вони вже присутні у файлі ~/git-credentials. Це ще один спосіб уникнути необхідності повторювати аутентифікацію. Розглянемо цей метод на практиці.

  • Спочатку необхідно активувати опцію для збереження облікових даних, виконавши команду git config credential.helper store.
  • Після активації спробуйте отримати доступ до приватного репозиторію, ввівши своє ім’я користувача та пароль.
  • Після введення облікових даних, вони будуть збережені у файлі ~/.git-credentials, як показано нижче.

git-облікові дані

Тепер повторіть дії, щоб перевірити, чи працює це. Оновіть, зафіксуйте зміни та відправте їх. Якщо ви правильно виконали попередні кроки, то система не повинна вимагати облікові дані.

Все добре…

Що робити, якщо ви хочете зберегти облікові дані протягом 4 годин, а не назавжди?

Credential.helper надає можливість тимчасово зберігати облікові дані протягом заданого часу. Замість сховища ми використовуємо кеш для зберігання облікових даних протягом певного часу.

Кеш зберігає облікові дані протягом 15 хвилин за замовчуванням. Через 15 хвилин система знову запитає облікові дані. Але ми можемо змінити час за замовчуванням за допомогою такої команди.

git config credential.helper 'cache --timeout={час_у_секундах}'

Обов’язково вкажіть час у секундах. Розглянемо цей варіант на практиці.

  • Спочатку потрібно активувати опцію кешування облікових даних за допомогою команди git config credential.helper cache.
  • Отримайте доступ до приватного сховища, ввівши своє ім’я користувача та пароль.
  • Після введення облікових даних вони будуть кешовані на визначений проміжок часу.

Тепер оновіть, зафіксуйте зміни та надішліть їх. Знову ж таки, система не буде запитувати ваші облікові дані, оскільки ви їх кешували.

Вище наведено команди для роботи з вже ініціалізованим репозиторієм git. Ми можемо глобально оновити конфігурацію git для всіх проєктів, додавши прапорець --global до наведених вище команд.

Персональні токени доступу

Персональні токени доступу використовуються для надання доступу до API GitHub. Вони схожі на токени OAuth. Тому їх можна використовувати для базової аутентифікації замість пароля для git. Таким чином, ми можемо використовувати персональні токени доступу для вирішення нашої проблеми.

Давайте подивимося, як це зробити.

  • Увійдіть у свій обліковий запис GitHub.
  • Перейдіть до налаштувань.

Налаштування GitHub

  • Далі перейдіть до налаштувань розробника на панелі навігації зліва.

Налаштування розробника GitHub

  • Натисніть “Персональні токени доступу”, щоб перейти до потрібного розділу. Ви побачите список персональних токенів доступу.

Персональні токени доступу GitHub

  • Натисніть “Створити новий токен”, щоб створити новий токен.

Згенерувати новий токен

  • Введіть примітку для токена. Це буде коротка нотатка для вашої зручності.

Примітка до персонального токена доступу

  • Виберіть дозволи для токена. Програми, що використовують токен, отримають доступ до всіх вибраних дозволів. У нашому випадку виберіть “репозиторій”.

Дозволи репозиторію

  • Прокрутіть сторінку вниз і натисніть кнопку “Створити токен”.

Кнопка створення токена

  • Система покаже особистий токен доступу лише один раз, як показано нижче. Ви не зможете знову його переглянути. Тому скопіюйте токен і збережіть його у безпечному місці. Можете скористатися менеджером паролів.

Персональний токен доступу

  • Ви успішно створили персональний токен доступу.
  • Тепер використаємо його для доступу до нашого приватного репозиторію.
  • Оновіть URL-адресу репозиторію у файлі .git/config на https://{personal_access_token}@github.com/hafeezulkareem/private_repository.git, аналогічно до першого методу.

Персональний токен доступу в конфігурації

Спробуйте тепер отримати доступ до приватного сховища.

Чи система вимагала аутентифікацію?

Ні, система не буде вимагати аутентифікацію, поки токен активний. Перейдемо до останнього способу вирішення нашої проблеми.

SSH

SSH використовується для аутентифікації. Повну документацію про SSH можна знайти на GitHub тут.

Ідея проста: згенеруйте SSH-ключ, додайте його до свого облікового запису GitHub і насолоджуйтесь доступом без пароля.

Давайте розглянемо ці три кроки детальніше.

  • Відкрийте термінал або командний рядок у вашій системі.
  • Введіть команду ssh-keygen -t rsa, щоб створити новий SSH-ключ.
  • Система запропонує каталог для збереження ключа. Натисніть Enter, щоб вибрати каталог за замовчуванням. Але ви також можете змінити каталог на свій розсуд. Тут ми використовуємо каталог за замовчуванням.

Каталог SSH

  • Тепер потрібно ввести парольну фразу для захисту SSH-ключа. Це не є обов’язковим кроком.
    • Якщо ви встановите парольну фразу для SSH-ключа, її потрібно буде вводити при кожному запуску системи.
    • Якщо ви не встановите парольну фразу, то її не потрібно буде вводити.

Пароль SSH

  • Введіть парольну фразу ще раз для її підтвердження.

Пароль SSH

  • Нарешті, система згенерує для вас новий SSH-ключ.

SSH-ключ

Ви успішно згенерували новий SSH-ключ у своїй системі. Буде створено два файли (якщо ви змінили шлях, то імена файлів можуть відрізнятися).

Файли SSH-ключів

Тепер настав час підключитися до вашого облікового запису GitHub. Вміст файлу з розширенням .pub потрібно скопіювати до вашого облікового запису GitHub для встановлення з’єднання. У моєму випадку це id_rsa.pub.

  • Увійдіть у свій обліковий запис GitHub.
  • Відкрийте налаштування.

Налаштування GitHub

  • Натисніть “Ключі SSH та GPG”, щоб перейти до потрібного розділу.

Ключі SSH та GPG

  • Натисніть “Новий SSH-ключ”, щоб додати новий згенерований SSH-ключ.

Новий SSH-ключ

  • Ви перейдете до наступного екрана.

Новий SSH-ключ

  • Введіть відповідний заголовок для SSH-ключа. SSH-ключі різні для кожної системи. Тому вибір заголовка на основі системи – це хороший варіант. Але не єдиний. Ви можете вибрати на основі інших критеріїв.
  • Після вибору заголовка скопіюйте вміст .pub у друге поле.

Новий SSH-ключ

  • Нарешті, натисніть кнопку “Add SSH key” та підтвердіть доступ своїм паролем GitHub.
  • Щойно доданий SSH-ключ буде виглядати приблизно так:

Новий SSH-ключ

Ми додали згенерований ключ SSH до GitHub. Тепер потрібно підтвердити SSH-з’єднання, щоб пізніше мати змогу використовувати аутентифікацію без пароля. Для цього введіть наступну команду в терміналі або командному рядку.

ssh -T [email protected]

З’єднання SSH

Система запитає підтвердження. Підтвердіть. І все готово.

Тепер клонуйте свій приватний репозиторій. Цього разу система не вимагатиме аутентифікації.

Оновіть зміни, зафіксуйте їх і відправте на віддалений сервер. Ось так. Система більше не буде вас запитувати про аутентифікацію. Насолоджуйтесь.

Висновок

Фух! Ми розглянули різні методи доступу до приватних репозиторіїв без постійного введення облікових даних. Ви можете використовувати будь-який метод. Але загальноприйнятою та рекомендованою практикою є використання SSH для аутентифікації.

Знову ж таки, це залежить від ваших уподобань; немає суворих правил щодо обов’язкового використання SSH. Але більшість компаній обирають метод SSH для аутентифікації, оскільки він є безпечним і заощаджує багато часу. І не забувайте про безпеку своїх облікових даних.

Щасливого кодування! 🙂