Cách chính xác để sử dụng git với repos gnome-keyring và http (s) là gì?


43

Hiện tại, bất cứ khi nào tôi git pullhoặc git pushđến kho lưu trữ http (s), tôi đều nhận được như sau:

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

Điều này là ổn khi sử dụng không thường xuyên, nhưng bắt đầu trở nên thực sự khó chịu rất nhanh. Thật không may, chuyển sang ssh không phải là một lựa chọn trong trường hợp này.

Tôi đã đọc rằng các phiên bản trước đó gitđã cung cấp thông tin "lưu trữ" và "bộ đệm", nhưng điều này không được khuyến khích vì nó đã lưu mật khẩu trong văn bản gốc.

NHƯNG

Các phiên bản mới hơn của gitlưu trữ thông tin git rõ ràng trong gnome-keyring, nhưng nó phải được thiết lập chính xác.

Tôi đã thử làm theo các câu trả lời khác (không phải Ubuntu) trên SO để làm cho nó hoạt động (cụ thể là câu trả lời này ), nhưng tôi vẫn được trình bày với lời nhắc tên người dùng và mật khẩu.

Cách chính xác và an toàn nhất để lưu trữ gitthông tin đăng nhập cho các repos http (s) là gì và làm thế nào để chúng hoạt động trên Ubuntu?


Bạn nên đề cập đến những phương pháp bạn đã thử. Nếu không, bạn có thể tìm thấy câu trả lời gợi ý chính xác.
muru

@muru Tại sao bạn lại xóa phần nhấn mạnh mà tôi đã thêm cho dễ đọc? Bây giờ nó chỉ là một đốm văn bản và những lý do phân biệt câu hỏi với người khác và câu hỏi thực tế ít rõ ràng hơn.
tu-Tái lập Monica-dor duh

Một toàn bộ câu in đậm in nghiêng là hầu như không thể đọc được.
muru

1
@muru Tôi xin khác. Tôi thấy văn bản in đậm và in nghiêng đưa ra những phần thiết yếu của câu hỏi.
tu-Tái lập Monica-dor duh

Câu trả lời:


45

gnome-credential-helper bây giờ bị phản đối

Thay vào đó, hãy sử dụng libsecret. Nếu nó chưa được cài đặt trên Ubuntu của bạn, hãy sử dụng quy trình sau:

  1. Bạn có thể cài đặt libsecretvà các thư viện phát triển với:

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

  2. Sau đó, bạn cần xây dựng trình quản lý thông tin xác thực

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

    sudo make

  3. Cuối cùng, bạn nên trỏ git vào tệp vừa tạo trong cấu hình của bạn:

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

Thêm chi tiết về https://stackoverflow.com/a/40312117/2017781


1
Bạn có thể muốn lưu ý rằng giải pháp này chỉ áp dụng cho các phiên bản git> = 2.11 (nơi có thể tìm thấy thư mục libsecret)
Charles Roberto Canato

1
Cái này có an toàn không? Những bí mật được lưu trữ ở đâu? Là cả truyền và lưu trữ an toàn? Có tài liệu chính thức nào không? Rõ ràng, theo trang nàytrang này , nó ở trong Chính Main và được duy trì bởi Debian / Ubuntu. Và: Từ Nó liên lạc với 'Dịch vụ bí mật' bằng cách sử dụng DBus.
Rời

1
@caw: Trong Gnome, "Dịch vụ bí mật" là cùng một gnome-keyring-daemon, chỉ thông qua một API khác. (Kế hoạch libsecret là cho phép des khác để xây dựng backends của mình hỗ trợ các API cùng, ví dụ như KDE lên kế hoạch để thực hiện điều này trong kwalletd.)
grawity

5
Cập nhật câu trả lời ưa thích của tôi vì tôi có thể xác minh điều này hoạt động vào ngày 18.04. :)
tu-Tái lập Monica-dor duh

44

Bạn cần thiết lập git credential helpervới Gnome key:

Cài đặt và biên dịch trình phát khóa Gnome:

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

Và thiết lập thông tin xác thực:

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

Thật kỳ quặc. Về mặt ngữ nghĩa, không nên có sự khác biệt giữa câu trả lời trong liên kết và câu trả lời này. Nhưng vì một số lý do, câu trả lời này không hiệu quả.
tu-Tái lập Monica-dor duh

Sau đó chạy git pushhoặc git pullnhư bình thường và lần đầu tiên nó sẽ yêu cầu cửa hàng ansd, và cứ sau đó nó sẽ lấy nó từ khóa. Để xác minh nó, hãy chạy seahorse. Nó nên được liệt kê dưới "Mật khẩu" -> "Đăng nhập".
tu-Tái lập Monica-dor duh

@tudor Thật lạ, tôi không thấy bất kỳ sự khác biệt "khái niệm" nào giữa câu trả lời của tôi và liên kết một. Vui vì nó giúp.

Có vẻ lạ với tôi rằng bạn vẫn phải chạy lệnh "make", nhưng các bước này hoạt động rất tốt. Cảm ơn!
DaveTheSellectist

2

Cách tiếp cận đơn giản này dường như là đủ trên Ubuntu 18.04.1 của tôi với git 2.17.1:

git config --global credential.helper cache

Bạn có thể chỉ định thời gian chờ một giờ (= 3600 giây) như thế này:

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

Đọc thêm trong hướng dẫn sử dụng tốt .

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.