Перейти к содержанию

Credential

Механизм Git для хранения и использования учетных данных пользователя при работе с удаленными репозиториями.

Зачем это нужно

Git при работе с удаленным репозиторием требует учетные данные от пользователя для взаимодействия с ним.

Настройки credentials позволяют избежать многократного ввода этих учетных данных. Обычно это:

  • логин

  • пароль

  • personal access token

  • access token от GitHub / GitLab / Bitbucket


Какие бывают способы авторизации в удаленном репозитории

HTTPS авторизация

Самый простой способ

Пример ссылки

https://github.com/user/repo.git
Для взаимодействия с репозиторием через HTTPS требуются следующие данные от пользователя:

  1. логин
  2. Personal Access Token (PAT)

PAT

токен заменяет пароль

Принять к сведению

Все эти данные требуется вводить постоянно при использовании команд

git clone
git push
git pull

SSH

Более профессиональное решение

Пример ссылки

git@github.com:user/repo.git
Авторизация происходит через SSH-ключи.


Проверка типа подключения

Посмотреть remote URL:

git remote -v

Пример выводов:

https://github.com/user/repo.git
git@github.com:user/repo.git

Как GIT хранит credentials

Git сам не хранит токены напрямую. Для этого используются credential helpers.

Посмотреть текущий helper:

git config --global credential.helper


Основные credential.helper

Store

git config --global credential.helper store
Сохраняет credentials в файл:
~/.git-credentials
Пример
https://username:token@github.com

Минусы

  • токены лежат открытым текстом
  • security scanners ругаются
  • можно случайно закоммитить
  • небезопасно

Предупреждение

Использовать store не рекомендуется.

Cache

git config --global credential.helper cache

Credentials хранится временно в памяти.

После истечения timeout или перезапуска системы данные исчезают.

Настройка timeout:

git config --global credential.helper "cache --timeout=3600"

osxkeychain (macOS)

git config --global credential.helper osxkeychain

Хранит токены в macOS Keychain.

Плюсы

  • безопасно
  • нет .git-credentials
  • удобно
  • интеграция с системой

Рекомендуемый вариант для macOS.


Как удалить credential helper

Удалить helper

git config --global --unset credential.helper
Удалить файл
rm ~/.git-credentials


Полезные команды

Посмотреть helper

git config --global credential.helper
Посмотреть все crenedtial настройки
git config --global --list | grep credential


Рекомендация

git config --global credential.helper cache
git config --global credential.helper osxkeychain

Практический совет

Лучший вариант

Для постоянной работы с Git рекомендуется использовать SSH-авторизацию вместо HTTPS.

Что это дает:

  • Безопаснее чем HTTP
  • Удобство
  • Не требует постоянного ввода токенов
  • Не создает .git-credentials