Безпека

Помічник облікових даних

Gitcito має справу з трьома різними видами секретів, і люди цілком закономірно вважають, що це одне й те саме:

Зберігається в
API-токени хостингу — PR, задачі, перевірки CI Gitcito, у keychain вашої ОС
Транспорт git@… Ваш SSH-ключ, через системний ssh-агент
Транспорт https:// Власний помічник облікових даних git

Третій ніхто не вважає функцією, доки він не зламається, — а тоді він породжує дві найпоширеніші скарги в git: чому воно знову мене питає? і чому воно досі надсилає токен, який я відкликав?

⌘K → Помічник облікових даних.

Налаштований помічник, правила для окремих хостів і попередження про файл із паролями

На що ви дивитесь

Кожен налаштований credential.helper — у тій області, звідки він походить: system, global, а потім цей репозиторій. Помічники складаються стосом: git питає кожного по черзі, і той, що заданий на рівні репозиторію, не заміняє глобального.

Кожен перевіряється на вашій машині:

Позначка Означає
готовий Програма помічника існує і запуститься
не встановлений Налаштований, але програми немає — кожен запит зводиться до того, що ви вводите пароль знову
паролі у звичайному файлі Помічник store (дивіться нижче)

Правила для окремих хостів показують секції credential.<url>.*. Вони мають перевагу над звичайним налаштуванням для URL, яким відповідають, і зазвичай саме вони є відповіддю на питання «чому цей один хост поводиться інакше».

Як обрати

Помічник Куди потрапляє пароль
osxkeychain macOS Keychain — зашифровано, для кожного користувача окремо
manager Git Credential Manager (Windows, кросплатформний)
wincred Windows Credential Manager
libsecret Служба секретів Linux (GNOME Keyring, KWallet)
cache Пам’ять, на 15 хвилин. На диску нічого
store Звичайний файл у вашій домашній теці. Без шифрування

Gitcito пропонує те, що справді встановлене на цій машині, позначає той варіант, який пасує вашій ОС, і робить решту сірою.

Область важлива. Для кожного репозиторію пише у вашу глобальну конфігурацію — саме цього ви майже завжди й хочете; лише для цього репозиторію призначене для того дивного репозиторію, який автентифікується десь інде.

Помічник store і ~/.git-credentials

store записує рядки https://user:password@host у ~/.git-credentials відкритим текстом, без жодного шифрування. Прочитати їх може будь-що, що працює від вашого імені: скрипт, postinstall якоїсь залежності, будь-що.

Якщо такий файл існує, ця сторінка так і скаже й порахує записи. Вона ніколи їх не показує — саме кількість тут і є суттю, а прочитати вміст, щоб його показати, було б тією самою помилкою.

Якщо ви знайшли такий файл і не мали цього на увазі: виберіть тут справжнього помічника, потім видаліть файл і один раз пройдіть автентифікацію заново.

Як змусити забути збережені дані

Коли токен відкликано чи змінено, помічник і далі віддає старий, а кожен пуш падає з 401, який нічого не називає. Забути просить налаштованого помічника стерти свій запис для цього хоста — це git credential reject, власний задокументований шлях git.

Дорогою нічого не читається: Gitcito ніколи не викликає git credential fill — команду, яка вивела б чинний пароль у стандартний потік.

Наступний пуш спитає вас один раз, і помічник збереже нову відповідь.

Обмеження, про які варто знати

  • Це сховище git, а не Gitcito. Змінюючи його, ви змінюєте і те, що робить ваш термінал, — у цьому й суть, але про це варто знати до того, як міняти.
  • Помічники системного рівня показані, але не редаговані. Вони живуть у конфігурації, писати в яку може лише адміністратор.
  • Gitcito не може перелічити те, що зберігає помічник. Жодний API облікових даних не показує цього, не віддавши самі секрети, тож діалог повідомляє про конфігурацію та стирає на запит — і більше нічого.
  • Токен, який ви дали Gitcito, — окрема річ. Відкликання одного не чіпає іншого; про бік keychain дивіться в безпеці.

Дивіться також: Безпека · SSH-ключі · Синхронізація

Покращити цей переклад на GitHub