Git: аутентификация через токен GitHub вместо пароля
С 13 августа 2021 года GitHub не принимает пароль аккаунта для аутентификации Git-операций по HTTPS. Вместо пароля используется персональный токен доступа (Personal Access Token, PAT).
- Можно ли использовать API?
- Под «API» здесь обычно имеется в виду персональный токен доступа (PAT). Это рекомендуемая замена паролю. Когда вы клонируете, отправляете или получаете код по HTTPS-адресу (например,
https://github.com/user/repo.git), в запросе пароля введите PAT.
- Под «API» здесь обычно имеется в виду персональный токен доступа (PAT). Это рекомендуемая замена паролю. Когда вы клонируете, отправляете или получаете код по HTTPS-адресу (например,
- Как сохранить PAT в переменной окружения?
- Переменная окружения с токеном нужна в основном для скриптов и программ, которые обращаются к API GitHub. Для обычных команд
git pushиgit pullудобнее использовать менеджер учётных данных Git (Credential Manager).
- Переменная окружения с токеном нужна в основном для скриптов и программ, которые обращаются к API GitHub. Для обычных команд
Способ 1: рекомендуемый — PAT вместе с менеджером учётных данных Git
Это лучший вариант для ежедневной работы с git на собственном компьютере. Создайте PAT, при первом запросе введите его, и Git запомнит токен.
Шаг 1: создание персонального токена доступа (PAT)
- Войдите в свой аккаунт GitHub.
- Нажмите на аватар в правом верхнем углу и выберите Settings.
- В левом меню прокрутите вниз и выберите Developer settings.
- В левом меню выберите Personal access tokens → Tokens (classic).
- Нажмите Generate new token, затем Generate new token (classic).
- Note: дайте токену понятное название, например «My Laptop Git».
- Expiration: для безопасности задайте срок действия, например 30 или 90 дней.
- Select scopes: самый важный шаг. Для клонирования, получения и отправки кода отметьте раздел
repo. Он включает все права на репозитории. - Нажмите Generate token внизу страницы.
- Сразу скопируйте токен! Он показывается только один раз, после обновления страницы его больше не увидеть. Сохраните его в надёжном месте.
Шаг 2: использование в командной строке
Теперь при выполнении git push или git pull, которые требуют аутентификации:
- Username: введите имя пользователя GitHub.
- Password: вставьте скопированный персональный токен доступа (PAT).
Git в большинстве операционных систем (Windows, macOS, Linux) кэширует учётные данные через менеджер учётных данных. После успешного ввода повторно вводить токен в ближайшее время не придётся.
Способ 2: переменная окружения для скриптов и специальных задач
Если вы пишете скрипт, который обращается к API GitHub (например, создаёт репозитории автоматически), хорошей практикой будет хранить PAT в переменной окружения.
Важно: этот способ не рекомендуется для обычных команд git, потому что менеджер учётных данных безопаснее и удобнее.
Настройка в Linux и macOS
Переменную можно задать в ~/.bashrc, ~/.zshrc или ~/.profile. Тогда она будет доступна в каждом новом терминале.
-
Откройте файл настроек оболочки, например
~/.bashrc:Bash
nano ~/.bashrc -
Добавьте в конец файла строку и замените
your_personal_access_tokenна свой PAT:Bash
export GITHUB_TOKEN="your_personal_access_token"Настоятельно рекомендуется использовать полный токен, который начинается с
ghp_илиghs_. -
Сохраните файл и примените настройки:
Bash
source ~/.bashrc -
Проверьте, что переменная задана:
Bash
echo $GITHUB_TOKENЕсли вы видите свой токен, настройка выполнена. Не публикуйте вывод этой команды.
Настройка в Windows
- В строке поиска найдите «переменные среды» и выберите «Изменение системных переменных среды».
- В окне «Свойства системы» нажмите «Переменные среды…».
- В разделе «Переменные среды пользователя» (рекомендуется) или «Системные переменные» нажмите «Создать…».
- Имя переменной:
GITHUB_TOKEN - Значение переменной: вставьте свой персональный токен доступа (PAT).
- Последовательно нажмите «ОК», чтобы закрыть окна.
- Откройте новое окно командной строки (CMD) или PowerShell: новые переменные начинают работать только в новых сеансах.
- Проверка:
- в CMD:
echo %GITHUB_TOKEN% - в PowerShell:
echo $env:GITHUB_TOKEN
- в CMD:
Итоги
- Ежедневная работа с командами
git: выбирайте способ 1. Создайте PAT и вставляйте его, когда Git запросит пароль. Менеджер учётных данных запомнит его. - Скрипты или программы, которые вызывают API: выбирайте способ 2. Сохраните PAT в переменной окружения и читайте её из кода.
- Другой вариант — SSH: помимо HTTPS с PAT, можно использовать протокол SSH. Для этого нужно создать пару SSH-ключей и добавить открытый ключ в аккаунт GitHub. После настройки имя пользователя и токен вводить не придётся. Этот способ тоже широко используется и считается безопасным.