Найти в Дзене

В рамках одного проекта появилась потребность на Astra Linux взаимодействовать с внешним Git-репозиторием по HTTPS. Для аутентификации без использования стандартных учётных данных был создан персональный токен доступа.


Возник вопрос о наиболее безопасном способе его хранения. Встроенные механизмы Git, такие как `credential.helper store` и `credential.helper cache`, не подходили - первый просто сохраняет данные в открытом виде в файле, а второй, помимо аналогичной проблемы с безопасностью, оказался менее удобным в использовании.

Установка дополнительных пакетов была невозможна. Изучая документацию Git, наткнулся на возможность создания кастомной реализации для предоставления Git учетных данных.

Оставалось найти надёжное место для хранения токена. Решение нашлось в виде **GNOME Keyring** - компонента, который поставляется из коробки в Desktop-версии системы.

Используемые инструменты:
- GNOME Keyring — встроенное хранилище секретов
- Seahorse — графический интерфейс для работы с ключами
- Secret-tool — консольная утилита для взаимодействия с хранилищем

Для начала добавим токен в хранилище:
secret-tool store --label="<описание>" <атрибут> <значение атрибута>

Пример команды:
secret-tool store --label="Git Personal Access Token" git token

После выполнения утилита запросит ввод токена.

Далее подготовим bash-скрипт для получения учётных данных(для удобства у нас доменный пользователь):

#!/bin/bash
echo "username=$USER"
echo "password=$(secret-tool lookup git token)"

Сохраняем файл, например, в `~/.git-credentials.sh`

Завершаем нашу настройку конфигурированием `credential.helper`:
git config --global credential.helper "/bin/bash ~/.credentials.sh"

Важные моменты:
- Хранилище должно быть разблокировано (например автоматически при входе в систему)
- При блокировке сессии хранилище остаётся доступным
В рамках одного проекта появилась потребность на Astra Linux взаимодействовать с внешним Git-репозиторием по HTTPS.
1 минута