git. Авторизация по https

2025-08-19 · 3 мин. для прочтения
Содержание

1 Создание токена доступа

1.1 Для GitHub

  • Перейдите в Settings → Developer Settings → Personal Access Tokens → Generate new token.
  • Выберите права (минимум repo для работы с репозиториями).
  • Скопируйте токен (отображается только один раз).

1.2 Для GitLab

  • Preferences → Access Tokens
  • Выберите read_repository и write_repository.
  • Скопируйте токен (отображается только один раз).

1.3 Для Gitea

  • Зайдите в настройки профиля
    • Кликните на аватар в правом верхнем углу.
    • Выберите Settings.
    • В левом меню выберите ApplicationsManage Access Tokens.
  • Создайте новый токен
    • В поле Token Name укажите название (например, my-token ).
    • Выберите права
      • Для работы с репозиториями: read:repository, write:repository.
      • Для доступа к API: read:user, write:user.
    • Нажмите Generate Token.
  • Скопируйте токен (отображается только один раз).

2 Клонирование репозитория с HTTPS

  • Клонируйте репозиторий:
git clone https://github.com/username/repo.git
  • При запросе данных введите:
    • username : ваш логин на платформе.
    • password : вставьте токен (не пароль).

3 Хранение учётных данных

3.1 Ручное указание токена в URL

  • Для клонирования:
git clone https://username:your_token@github.com/username/repo.git
  • Для существующего репозитория:
git remote set-url origin https://username:your_token@github.com/username/repo.git

3.2 Использование переменных окружения (для скриптов)

  • Linux
export GIT_USERNAME="ваш_логин"
export GIT_PASSWORD="ваш_токен"
  • Windows (PowerShell)
$env:GIT_USERNAME = "ваш_логин"
$env:GIT_PASSWORD = "ваш_токен"
  • Использование в командах:
git clone https://$GIT_USERNAME:$GIT_PASSWORD@github.com/user/repo.git

3.3 Настройка автоматической аутентификации

  • Git Credential Helper — это инструмент для безопасного хранения и автоматической подстановки учётных данных (логина, пароля, токенов) при работе с Git.
  • Он избавляет от необходимости вводить данные при каждом взаимодействии с удалённым репозиторием.

3.3.1 Вариант. Кэширование учётных данных

  • Хранит данные в памяти 15 минут
    git config --global credential.helper cache
    
  • Кэшировать в памяти на 1 час (3600 секунд)
git config --global credential.helper "cache --timeout=3600"
  • Проверка настроек
git config --global --get credential.helper

3.3.2 Вариант. Постоянное хранение (для доверенных устройств)

  • Сохранить в файл ~/.git-credentials.
git config --global credential.helper store
  • Первая операция запросит логин/токен, последующие — нет.
git pull

3.3.3 Вариант. Хранение в менеджере паролей gopass

4 Рекомендации по безопасности

  • Никогда не коммитьте токены в код.
  • Для публичных репозиториев используйте токены с ограниченными правами.
  • Регулярно обновляйте токены (рекомендуется каждые 3-6 месяцев).
  • Используйте .gitignore для файлов с чувствительными данными.

5 Миграция репозитория с SSH на HTTPS

5.1 Изменение URL удалённого репозитория

  • Для каждого репозитория выполните в терминале:
git remote set-url origin https://github.com/username/repo.git
  • Замените:

    • username → ваш логин на GitHub
    • repo → название репозитория
  • Например, для репозитория my-project:

git remote set-url origin https://github.com/ivanov/my-project.git

5.2 Массовое изменение

  • Создайте скрипт git-ssh-to-https.sh:
#!/bin/bash
for dir in *
do
    if [[ -d ${dir} ]]
       then
           cd "$dir" || exit
           repo_url=$(git remote get-url origin)
           new_url=$(echo "$repo_url" | sed 's/git@github.com:/https:\/\/github.com\//; s/\.git$//').git
           git remote set-url origin "$new_url"
           echo "Updated: $dir$new_url"
    fi
done
  • Или однострочник:
find . -type d -name .git -exec sh -c 'cd "{}" && cd .. && git remote set-url origin $(git remote get-url origin | sed "s/git@/https:\/\//; s/.com:/.com\//")' \;
Дмитрий Сергеевич Кулябов
Authors
Профессор кафедры теории вероятностей и кибербезопасности
Мои научные интересы включают физику, администрирование Unix и сетей.