Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Git: аутентификация через токен GitHub вместо пароля

С 13 августа 2021 года GitHub не принимает пароль аккаунта для аутентификации Git-операций по HTTPS. Вместо пароля используется персональный токен доступа (Personal Access Token, PAT).

  1. Можно ли использовать API?
    • Под «API» здесь обычно имеется в виду персональный токен доступа (PAT). Это рекомендуемая замена паролю. Когда вы клонируете, отправляете или получаете код по HTTPS-адресу (например, https://github.com/user/repo.git), в запросе пароля введите PAT.
  2. Как сохранить PAT в переменной окружения?
    • Переменная окружения с токеном нужна в основном для скриптов и программ, которые обращаются к API GitHub. Для обычных команд git push и git pull удобнее использовать менеджер учётных данных Git (Credential Manager).

Способ 1: рекомендуемый — PAT вместе с менеджером учётных данных Git

Это лучший вариант для ежедневной работы с git на собственном компьютере. Создайте PAT, при первом запросе введите его, и Git запомнит токен.

Шаг 1: создание персонального токена доступа (PAT)

  1. Войдите в свой аккаунт GitHub.
  2. Нажмите на аватар в правом верхнем углу и выберите Settings.
  3. В левом меню прокрутите вниз и выберите Developer settings.
  4. В левом меню выберите Personal access tokens → Tokens (classic).
  5. Нажмите Generate new token, затем Generate new token (classic).
  6. Note: дайте токену понятное название, например «My Laptop Git».
  7. Expiration: для безопасности задайте срок действия, например 30 или 90 дней.
  8. Select scopes: самый важный шаг. Для клонирования, получения и отправки кода отметьте раздел repo. Он включает все права на репозитории.
  9. Нажмите Generate token внизу страницы.
  10. Сразу скопируйте токен! Он показывается только один раз, после обновления страницы его больше не увидеть. Сохраните его в надёжном месте.

Шаг 2: использование в командной строке

Теперь при выполнении git push или git pull, которые требуют аутентификации:

  • Username: введите имя пользователя GitHub.
  • Password: вставьте скопированный персональный токен доступа (PAT).

Git в большинстве операционных систем (Windows, macOS, Linux) кэширует учётные данные через менеджер учётных данных. После успешного ввода повторно вводить токен в ближайшее время не придётся.


Способ 2: переменная окружения для скриптов и специальных задач

Если вы пишете скрипт, который обращается к API GitHub (например, создаёт репозитории автоматически), хорошей практикой будет хранить PAT в переменной окружения.

Важно: этот способ не рекомендуется для обычных команд git, потому что менеджер учётных данных безопаснее и удобнее.

Настройка в Linux и macOS

Переменную можно задать в ~/.bashrc, ~/.zshrc или ~/.profile. Тогда она будет доступна в каждом новом терминале.

  1. Откройте файл настроек оболочки, например ~/.bashrc:

    Bash

    nano ~/.bashrc
    
  2. Добавьте в конец файла строку и замените your_personal_access_token на свой PAT:

    Bash

    export GITHUB_TOKEN="your_personal_access_token"
    

    Настоятельно рекомендуется использовать полный токен, который начинается с ghp_ или ghs_.

  3. Сохраните файл и примените настройки:

    Bash

    source ~/.bashrc
    
  4. Проверьте, что переменная задана:

    Bash

    echo $GITHUB_TOKEN
    

    Если вы видите свой токен, настройка выполнена. Не публикуйте вывод этой команды.

Настройка в Windows

  1. В строке поиска найдите «переменные среды» и выберите «Изменение системных переменных среды».
  2. В окне «Свойства системы» нажмите «Переменные среды…».
  3. В разделе «Переменные среды пользователя» (рекомендуется) или «Системные переменные» нажмите «Создать…».
  4. Имя переменной: GITHUB_TOKEN
  5. Значение переменной: вставьте свой персональный токен доступа (PAT).
  6. Последовательно нажмите «ОК», чтобы закрыть окна.
  7. Откройте новое окно командной строки (CMD) или PowerShell: новые переменные начинают работать только в новых сеансах.
  8. Проверка:
    • в CMD: echo %GITHUB_TOKEN%
    • в PowerShell: echo $env:GITHUB_TOKEN

Итоги

  • Ежедневная работа с командами git: выбирайте способ 1. Создайте PAT и вставляйте его, когда Git запросит пароль. Менеджер учётных данных запомнит его.
  • Скрипты или программы, которые вызывают API: выбирайте способ 2. Сохраните PAT в переменной окружения и читайте её из кода.
  • Другой вариант — SSH: помимо HTTPS с PAT, можно использовать протокол SSH. Для этого нужно создать пару SSH-ключей и добавить открытый ключ в аккаунт GitHub. После настройки имя пользователя и токен вводить не придётся. Этот способ тоже широко используется и считается безопасным.