Який правильний спосіб використання git за допомогою gnome-keyring та http (s) repos?


43

Наразі, коли я git pullабо git pushв сховище http (s), я отримую наступне:

$ git pull
Username for 'https://gitrepos.reposdomain.com': me@mydomain.com
Password for 'https://me@mydomain.com@gitrepos.reposdomain.com': 

Це є нормальним для нечастого використання, але починає дуже швидко дратувати. На жаль, перехід на ssh в цьому випадку не є можливим.

Я читав, що попередні версії gitнадавали облікові дані "store" та "cache", але це не радилось, оскільки він зберігав пароль у відкритому тексті.

АЛЕ

Новіші версії, gitочевидно, зберігають облікові дані git у програмі gnome-keyring, але її потрібно правильно налаштувати.

Я намагався слідувати іншим (не Ubuntu) відповідям на SO, щоб змусити це працювати (а саме цей ), але мені все одно надано відповідне ім'я користувача та пароль.

Який правильний та найбезпечніший спосіб зберігання gitоблікових даних для репортажів http (s) і як змусити їх працювати на Ubuntu?


Ви повинні згадати, які методи ви спробували. Інакше ви можете знайти відповіді, що підказують саме такі.
муру

@muru Чому ви видалили наголоси, які я додав для читабельності? Тепер це лише обрив тексту, і причини, що відрізняють питання від інших, а власне питання менш очевидні.
tu-Reinstate Monica-dor duh

Весь вирок жирним шрифтом і курсивом ледь читаються.
муру

1
@muru Я прошу відрізнятися. Я знаходжу жирним шрифтом та курсивом текст розкриває основні частини питання.
tu-Reinstate Monica-dor duh

Відповіді:


45

gnome-credential-helper зараз застаріло.

Замість цього використовуйте лібсекрет. Якщо ваш ubuntu ще не вбудований, використовуйте наступну процедуру:

  1. Ви можете встановити libsecretта бібліотеки розвитку за допомогою:

    sudo apt-get install libsecret-1-0 libsecret-1-dev

  2. Тоді вам потрібно створити менеджера облікових даних

    cd /usr/share/doc/git/contrib/credential/libsecret

    sudo make

  3. Нарешті, слід вказати git на щойно створений файл у вашій конфігурації:

    git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret

Детальніше на https://stackoverflow.com/a/40312117/2017781


1
Ви можете зауважити, що це рішення стосується лише версій git> = 2,11 (де потім може бути знайдено
лібсекрет

1
Це безпечно? Де зберігаються секрети? Чи безпечна і передача, і зберігання? Чи є офіційна документація? Мабуть, згідно з цією сторінкою та на цій сторінці , вона знаходиться в “Основному” та підтримується Debian / Ubuntu. І: "Він спілкується з" Секретною службою "за допомогою DBus."
передзвоніть

1
@caw: У GNOME "Секретна служба" - це той самий gnome-keyring-демон, просто через інший API. (План libsecret полягав у тому, щоб дозволити іншим DE розробити власні програмні засоби, що підтримують той самий API, наприклад, KDE планував реалізувати це в kwalletd.)
grawity

5
Оновлення моєї бажаної відповіді, оскільки я можу перевірити це працює 18.04. :)
tu-Reinstate Monica-dor duh

44

Вам потрібно налаштувати git за credential helperдопомогою Gnome Keyring:

Встановіть і компілюйте розробник Gnome Keyring:

sudo apt-get install libgnome-keyring-dev
sudo make --directory=/usr/share/doc/git/contrib/credential/gnome-keyring

І встановіть обліковий запис:

git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring

Це справді дивно. Семантично не повинно бути різниці між відповіддю у посиланні та цією відповіддю. Але чомусь ця відповідь працює там, де інша ні.
tu-Reinstate Monica-dor duh

Потім запустіть git pushабо git pullяк звичайно, і перший раз він запитає магазин ansd, і кожного разу після цього отримуватиме його від брелока. Щоб перевірити це, запустіть seahorse. Він повинен бути вказаний у розділі "Паролі" -> "Вхід".
tu-Reinstate Monica-dor duh

@tudor Це дивно, я не бачу жодної "концептуальної" різниці між моєю відповіддю та посиланням. Радий, що це допомагає.

Мені здається дивним, що вам все одно потрібно виконати команду "make", але ці кроки працюють чудово. Дякую!
DaveTheScientist

2

Цей простий підхід видається достатнім для мого Ubuntu 18.04.1 з git 2.17.1:

git config --global credential.helper cache

Ви можете вказати час очікування (= 3600 секунд) таким чином:

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

Подальше читання у прекрасному посібнику .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.