Як використовувати git з інтеграцією в gnome-keyring


129

Git 1.8.0 підтримує інтеграцію з gnome-keyring.

http://www.h-online.com/open/news/item/Git-1-8-0-can-access-Windows-and-GNOME-keyrings-1733879.html

Ознайомившись з документами про помічників щодо git повноважень: http://git-scm.com/docs/gitcredentials.html

Мені не вдалося знайти спосіб використання цієї нової функції. Як я можу це інтегрувати? Я використовую Archlinux з git, встановленим із сховища Archlinux. (git 1.8.0)

Відповіді:


193

@ marcosdsanchez відповідь - це Arch (який відповідає на оригінальне запитання), але я перебуваю на Ubuntu. Для git> = 2,11:

sudo apt-get install libsecret-1-0 libsecret-1-dev
cd /usr/share/doc/git/contrib/credential/libsecret
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret

Для git <2,11:

sudo apt-get install libgnome-keyring-dev
cd /usr/share/doc/git/contrib/credential/gnome-keyring
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring

9
Я спочатку вагався, як це зробити, але я зробив нарешті, і це прекрасно працює. Як кажуть документи для gitcredentials , ви можете також захотіти зробити git help -a | grep credential-і подивитися, чи встановлені інші помічники. За замовчуванням прибувають такі credential-cache(пам'ятайте пароль деякий час після його введення, 15 хвилин за замовчуванням) та credential-store(просто збережіть пароль у простому тексті у незашифрованому файлі на диску ~/.git-credentialsза замовчуванням).
ShreevatsaR

51
Чи може хтось пояснити, чому це потрібно скласти вручну і не доступне за замовчуванням через пакет?
lanoxx

4
Працював в Ubuntu 14.04 LTS!
Євген Кулабухов

4
просто довелося chmod 0755 git-credential-gnome-keyringдодати дозвіл на виконання іншим, ніж root
Ларі Хотарі

8
Досі діє для Ubuntu 16.04 LTS
Євген Кулабухов

54

Git 1.8.0 поставляється з підтримкою керування ключем gnome, але двійковий файл повинен бути скомпільований для вашої платформи.

Ось що це вирішило для мене в Archlinux:

$ sudo pacman -S libgnome-keyring
$ cd /usr/share/git/credential/gnome-keyring
$ make
$ git config --global credential.helper /usr/share/git/credential/gnome-keyring/git-credential-gnome-keyring

Рішення @VonC було близьким, але команда git config повинна вказувати на виконуваний файл. Тому для мене це не працювало.


Я переформатував свою відповідь, щоб відобразити ваш висновок. Я створив його (він не був побудований за замовчуванням в моєму дистрибутиві 1,8 git) і перевірив його сьогодні вранці. Це справді працює.
VonC

1
Якщо ви отримуєте, Package gnome-keyring-1 was not found in the pkg-config search path.вам не вистачає бібліотеки розробників для gnome-keyring. На Ubuntu вони доступні з apt-get install libgnome-keyring-dev. Також мені довелося завантажити вручну git contrib repo з github.com/git/git/tree/master/contrib і помістити його в / usr / share / git-core /. Ці файли більше не включаються до встановлення за замовчуванням git, принаймні за допомогою офіційного git-core ubuntu ppa.
Йоганн

1
Це досить добре пояснює, чому пакет Aur git-credential-gnomekeyringпропав, занадто погано, що в AUR такої інформації немає.
ryenus

У ubuntu у мене немає папки git у /usr/share/... лише gitweb та git-core. Але я на Git 1.7.9. Може, тому ...?
тимчасовий_користувач

1
Станом на 2017 рік на Arch libgnome-keyringдостатньо просто встановити (принаймні, якщо ви використовуєте gnome).
ald.li

25

Оновлення Q4 2016:

  • Unix, Mac (Git 2.11+)

    git config --global credential.helper libsecret
    

(Див. " Помилка під час використання помічника облікового запису Git ізgnome-keyring ")

  • Windows:

    git config --global credential.helper manager
    

(Див. Розділ " Як вийти з консолі Git Bash в Windows? ": Це Git для Windows за допомогою останнього менеджера довірених файлів Microsoft Git для Windows )


Оригінальна відповідь (2012)

Довідники щодо довіри для платформ Windows, Mac та Unix були представлені першими в репо-реперізі "git-poveritive-helper" , який тепер включений у git distro :

Цей репозиторій містить набір помічників допоміжних даних Git ( gitcredentials(7)), які є частиною git(або мають бути внесені в майбутньому).

$ git clone git://github.com/pah/git-credential-helper.git
$ BACKEND=gnome-keyring      # or any other backend
$ cd git-credential-helper/$BACKEND
$ make
$ cp git-credential-$BACKEND /path/to/git/crendential

при складанні він буде встановлений у /path/to/git/credentialкаталозі.

Щоб використовувати цей сервер, ви можете додати його до вашої (глобальної) конфігурації Git, встановивши

(тут для Unix):

git config --global credential.helper /path/to/git/credential/gnome-keyring/git-credential-gnome-keyring

Примітка для Windows:

Я припускаю, що ви можете зробити програму, що працює під керуванням Windows та викликати бібліотеку на зразок " pypi keyring 0.10 .
Але це бек-енд, і ви не використовуєте її безпосередньо з Git.

Ви використовуєте "помічник довіри" (який, у свою чергу, називатиме будь-який API даних, який він хоче в Windows ).

GitHub для Windows надає таку допомогу (як виконавчий файл, який називається ... github), і може зберігати ваші облікові дані протягом сеансу Windows.
Запустіть оболонку з цього вікна "GitHub для Windows", і ви побачите, ввівши "git config --system -l":

C:\Users\VonC\Documents\GitHub\test [master +2 ~0 -0 !]> git config --system -l
credential.helper=!github --credentials

credential.helper=!github --credentialsЧастина викликатиме посвідчення помічника « github».

$ git config [--global] credential.helper $BACKEND

Не те, що я шукаю. Відповідь має бути * nix.
marcosdsanchez

@marcosdsanchez добре, я відредагував свою відповідь, щоб включити налаштування та використання gnome-keyring в Unix з Git.
VonC

Я хочу використовувати функцію 1.8.0 git, яка вже є. Не сторонній код. Дякую.
marcosdsanchez

@marcosdsanchez, тоді вам потрібно скласти github.com/git/git/tree/master/contrib/credential/gnome-keyring (який упакований з git). Після складання ви встановите та використаєте його, як показано в моїй відповіді.
VonC

Напевно, немає вбудованого двійкового?
marcosdsanchez

15

Оновлення жовтня 2018 року

GNOME знецінив брелоки і замінив його на лібсекрет. Коміт https://github.com/git/git/commit/87d1353a6a додав нового помічника довірених даних / usr / libexec / git-core / git-credential-libsecret.

git config --global credential.helper libsecret


2
Можливо, це має бути коментарем до будь-якої відповіді на основі gnome-keyring тут.
Мурмель

Погодьтеся, gnome-keyringвідповіді на основі повинні бути відредаговані відповідно. Можливо, просто виключити весь варіант. Це не працювало для мене на Ubuntu 19.10.
Маріо

11

Для всіх, хто в Fedora, я трохи відредагував відповідь Джеймса Варда:

sudo yum install libgnome-keyring-devel
cd /usr/share/doc/git/contrib/credential/gnome-keyring
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring

2
Я розгублений, хіба це вже не входить в пакет git? Що це за файл у пакеті fc19, git-1.8.3.1-1.fc19.x86_64. Там в цей файл тут: /usr/libexec/git-core/git-credential-gnome-keyring.
slm

10
У Fedora 21, git 2.1.0, ви можете просто зробити:git config --global credential.helper gnome-keyring
RedPoppy

7

Просто додайте ці два рядки у свій ~/.gitconfigфайл:

[credential]
    helper = gnome-keyring

Наступного разу, коли вам буде запропоновано пароль від Git, введений пароль буде збережено в Gnome Keyring (ви можете побачити це за допомогою seahorseінструменту), і потім вас більше не запитають.

Це передбачає, що ваша версія Git є достатньо новою (наприклад, 2.1.0), і ви перебуваєте під Linux Fedora, RHEL або CentOS. Для більш старих версій або інших ОС / дистрибутиві див. Інші відповіді.


6
В Ubuntu 16.04:git: 'credential-gnome-keyring' is not a git command.
ferit

@Saibot: так, ти маєш рацію. Схоже, Fedora / RHEL надають це, але Ubuntu цього не робить. Тож відповідь Джеймса Уорда ( stackoverflow.com/a/14528360/2148773 ) в цьому випадку краща.
олівер

2

Деякі дистрибутиви поставляються з цією інтеграцією як інсталяційний пакет, не вимагаючи компіляції. Залежно від вашої версії GNOME, вам потрібно буде встановити gnome-keyringабо libsecretверсію пакету, щось подібне git-credential-gnome-keyring(OpenSUSE Leap 42.3).

Однак саме по собі це не дасть змоги інтегрувати Git з ключем GNOME автоматично. Ви все одно повинні налаштувати Git для використання цього способу зберігання даних:

git config --global credential.helper gnome-keyring # If you installed git-credential-gnome-keyring
git config --global credential.helper libsecret     # If you installed git-credential-libsecret

У Ubuntu 19.10 ця gnome-keyringопція більше не працює для мене, але інструкція Джеймса Варда, libsecretяк і раніше, працює добре. Однак мене збентежила рекомендація щодо використання gnome-keyringтут: github.com/timhughes/git-credential-libsecret
Маріо

libsecret(або те, що find /usr -iname git-credential-libsecretдає) - це правильний варіант у Gentoo Linux. Зверніть увагу, що dev-vcs/gitпотрібно створити з USE=gnome-keyring.
сфакка

1

На Fedora потрібно встановити

$ sudo dnf install git-credential-libsecret

і відредагуйте конфігурацію git, щоб скористатись помічником даних.

[credential]
    helper = /usr/libexec/git-core/git-credential-libsecret

FYI libsecretпакет нещодавно був розбитий, див. Пост від @rugk . Ось чому користувачам потрібно перевстановити цей пакет.

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