Cách sử dụng git với tích hợp gnome-keyring


129

Git 1.8.0 hỗ trợ tích hợp với gnome-keyring.

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

Sau khi đọc các tài liệu về người trợ giúp thông tin git: http://git-scm.com/docs/gitcredentials.html

Tôi không thể tìm ra cách sử dụng tính năng mới này. Làm thế nào tôi có thể tích hợp nó? Tôi đang sử dụng Archlinux với git được cài đặt từ kho lưu trữ của Archlinux. (git 1.8.0)

Câu trả lời:


193

Câu trả lời của @ marcosdsanchez là dành cho Arch (trả lời câu hỏi ban đầu) nhưng tôi đang dùng Ubuntu. Đối với 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

Đối với 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
Tôi đã do dự để làm điều này lúc đầu, nhưng cuối cùng tôi đã làm và nó hoạt động hoàn hảo. Như các tài liệu cho gitcredentials nói, bạn cũng có thể muốn làm git help -a | grep credential-và xem nếu bạn đã cài đặt các trợ giúp khác. Những người đến theo mặc định là credential-cache(nhớ mật khẩu một thời gian sau khi bạn nhập nó, 15 phút theo mặc định) và credential-store(chỉ lưu trữ mật khẩu trong bản rõ trên một tệp không được mã hóa trên đĩa, ~/.git-credentialstheo mặc định).
ShreevatsaR

51
Bất cứ ai có thể giải thích tại sao điều này cần phải được biên dịch thủ công và không có sẵn theo mặc định thông qua một gói?
lanoxx

4
Đã làm việc trong Ubuntu 14.04 LTS!
Eugene Kulabuhov

4
chỉ cần làm chmod 0755 git-credential-gnome-keyringđể thêm quyền thực thi cho người khác ngoài root
Lari Hotari

8
Vẫn còn hiệu lực cho Ubuntu 16.04 LTS
Eugene Kulabuhov

54

Git 1.8.0 đi kèm với hỗ trợ khóa gnome nhưng nhị phân cần được biên dịch cho nền tảng của bạn.

Đây là những gì đã giải quyết nó cho tôi trong 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

Giải pháp @VonC đã đóng, nhưng lệnh git config sẽ trỏ đến tệp thực thi. Đó là lý do tại sao nó không làm việc cho tôi.


Tôi đã định dạng lại câu trả lời của tôi để phản ánh kết luận của bạn. Tôi đã xây dựng nó (nó không được xây dựng theo mặc định trong bản phân phối git 1.8 của tôi) và đã thử nghiệm nó vào sáng nay. Nó không hoạt động.
VonC

1
Nếu bạn nhận được Package gnome-keyring-1 was not found in the pkg-config search path.bạn đang thiếu các thư viện dev cho gnome-keyring. Trên Ubuntu có sẵn với apt-get install libgnome-keyring-dev. Ngoài ra, tôi đã phải tải xuống repo git bằng tay từ github.com/git/git/tree/master/contrib và đặt nó vào / usr / share / git-core /. Các tệp này không còn được bao gồm trong cài đặt git mặc định, ít nhất là sử dụng ppa-core ub Ubuntu chính thức.
Johann

1
Điều này khá giải thích tại sao gói aur git-credential-gnomekeyringkhông còn nữa, thật tệ là trong AUR không có thông tin đó.
ryenus

Trên Ubuntu tôi không có thư mục git trong /usr/share/... chỉ có gitweb và git-core. Nhưng tôi đang trên Git 1.7.9. Đó có thể là lý do tại sao ...?
tạm

1
Kể từ năm 2017 trên Arch, chỉ cần cài đặt libgnome-keyringlà đủ (ít nhất là nếu bạn đang sử dụng gnome).
ald.li

25

Cập nhật quý 4 năm 2016:

  • Unix, Mac (Git 2.11+)

    git config --global credential.helper libsecret
    

(Xem phần " Lỗi khi sử dụng trình trợ giúp thông tin Git vớignome-keyring ")

  • Các cửa sổ:

    git config --global credential.helper manager
    

(Xem " Cách đăng xuất trong bảng điều khiển Git Bash trong Windows? ": Đó là Git cho Windows bằng Trình quản lý thông tin xác thực Microsoft Git mới nhất cho Windows )


Câu trả lời gốc (2012)

Trình trợ giúp xác thực, dành cho các nền tảng Windows, Mac và Unix, đã được giới thiệu đầu tiên trong repo "git-cert-helper" , hiện đã được đưa vào git distro :

Kho lưu trữ này chứa tập hợp các trình trợ giúp thông tin Git ( gitcredentials(7)) là một phần của git(hoặc có nghĩa là được đóng góp trong tương lai).

$ 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

Khi xây dựng, nó sẽ được cài đặt trong /path/to/git/credentialthư mục.

Để sử dụng phụ trợ này, bạn có thể thêm nó vào cấu hình Git (toàn cầu) của mình bằng cách cài đặt

(ở đây dành cho Unix):

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

Lưu ý cho Windows:

Tôi cho rằng bạn có thể tạo một chương trình chạy trên Windows và gọi một thư viện như " pypi keyring 0.10 .
Nhưng đó là back-end và bạn không sử dụng nó trực tiếp từ Git.

Những gì bạn đang sử dụng là một "trình trợ giúp thông tin xác thực" (đến lượt nó, sẽ gọi bất kỳ API thông tin nào mà nó muốn trên Windows ).

GitHub cho Windows cung cấp một trình trợ giúp như vậy (dưới dạng thực thi được gọi là ... github) và có thể lưu trữ thông tin đăng nhập của bạn trong suốt thời gian của phiên Windows.
Khởi chạy shell từ cửa sổ "GitHub cho Windows" đó và bạn sẽ thấy, gõ "git config --system -l":

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

Phần credential.helper=!github --credentialsnày sẽ gọi người trợ giúp thông tin ' github'.

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

Không phải những gì tôi đang tìm kiếm. Câu trả lời chỉ nên * nix.
marcosdsanchez

@marcosdsanchez ok, tôi đã chỉnh sửa câu trả lời của mình để bao gồm thiết lập và sử dụng khóa gnome trên Unix với Git.
VonC

Tôi muốn sử dụng tính năng 1.8.0 của git, đã có sẵn. Không phải mã bên thứ ba. Cảm ơn.
marcosdsanchez

@marcosdsanchez thì bạn cần biên dịch github.com/git/git/tree/master/contrib/credential/gnome-keyring (được đóng gói bằng git). Sau khi biên dịch, bạn sẽ cài đặt và sử dụng nó như minh họa trong câu trả lời của tôi.
VonC

Tôi đoán không có tích hợp nhị phân?
marcosdsanchez

15

Cập nhật tháng 10 năm 2018

Gnome đã phản đối khóa libgnome và thay thế nó bằng libsecret. Cam kết https://github.com/git/git/commit/87d1353a6a đã thêm một trình trợ giúp thông tin mới / usr / libexec / git-core / git-cert-libsecret.

git config --global credential.helper libsecret


2
Có lẽ, đây nên là một nhận xét về bất kỳ câu trả lời dựa trên gnome-keyring nào ở đây.
Murmel

Đồng ý, gnome-keyringcâu trả lời dựa trên nên được chỉnh sửa cho phù hợp. Có lẽ chỉ cần loại trừ toàn bộ tùy chọn. Điều đó hoàn toàn không hoạt động với tôi trên Ubuntu 19.10.
Mario

11

Đối với bất kỳ ai trên Fedora, tôi đã chỉnh sửa câu trả lời của James Ward một chút:

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
Tôi bối rối, không phải điều này đã được bao gồm trong các gói git? Tập tin này là gì trong gói fc19, git-1.8.3.1-1.fc19.x86_64. Có tập tin này ở đây : /usr/libexec/git-core/git-credential-gnome-keyring.
slm

10
Trong Fedora 21, git 2.1.0, bạn có thể thực hiện một cách đơn giản:git config --global credential.helper gnome-keyring
RedPoppy

7

Chỉ cần thêm hai dòng này vào ~/.gitconfigtập tin của bạn :

[credential]
    helper = gnome-keyring

Lần tới khi bạn được yêu cầu nhập mật khẩu bằng Git, mật khẩu đã nhập sẽ được lưu vào Gnome keyring (bạn có thể thấy điều này bằng seahorsecông cụ) và sau đó bạn sẽ không được hỏi lại mật khẩu.

Điều này giả định rằng phiên bản Git của bạn là đủ mới (như 2.1.0) và bạn đang ở trong Linux Fedora, RHEL hoặc CentOS. Đối với các phiên bản cũ hơn hoặc các hệ điều hành / phân phối khác, hãy kiểm tra các câu trả lời khác.


6
Trong Ubuntu 16.04:git: 'credential-gnome-keyring' is not a git command.
men

@Saibot: Rất tiếc, bạn nói đúng. Có vẻ như Fedora / RHEL cung cấp điều này, nhưng Ubuntu thì không. Vì vậy, câu trả lời của James Ward ( stackoverflow.com/a/14528360/2148773 ) là tốt hơn trong trường hợp đó.
oliver

2

Một số bản phân phối đi kèm với tích hợp này như một gói cài đặt, mà không yêu cầu bất kỳ biên dịch nào. Tùy thuộc vào phiên bản Gnome của bạn, bạn sẽ cần cài đặt một gnome-keyringhoặc libsecretcác phiên bản của gói, đại loại như git-credential-gnome-keyring(OpenSUSE Leap 42.3).

Tuy nhiên, điều này tự nó sẽ không cho phép tích hợp Git với Khóa Gnome. Bạn vẫn phải định cấu hình Git để sử dụng phương thức lưu trữ thông tin xác thực này:

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

Trên Ubuntu 19.10, gnome-keyringtùy chọn không còn phù hợp với tôi nữa, nhưng hướng dẫn sử dụng của James Ward libsecretvẫn hoạt động tốt. Tuy nhiên, tôi đã bối rối trước khuyến nghị sử dụng gnome-keyringđược đưa ra ở đây: github.com/timhughes/git-credential-libsecret
Mario

libsecret(hoặc những gì find /usr -iname git-credential-libsecretmang lại) là tùy chọn phù hợp trong Gentoo Linux. Lưu ý rằng dev-vcs/gitphải được nổi lên với USE=gnome-keyring.
sphakka

1

Trên Fedora bạn cần cài đặt

$ sudo dnf install git-credential-libsecret

và chỉnh sửa cấu hình git của bạn để sử dụng trình trợ giúp thông tin xác thực.

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

FYI libsecretgói gần đây đã được tách ra, xem bài đăng từ @rugk . Đó là lý do tại sao người dùng cần cài đặt lại gói này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.