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


Hiện tại, bất cứ khi nào tôi git pull hoặc là git push đến một kho lưu trữ http, tôi nhận được những điều sau đây:

$ 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à ok để sử dụng không thường xuyên, nhưng bắt đầu trở nên thực sự gây phiền nhiễu rất nhanh chóng. Thật không may, chuyển sang ssh không phải là một tùy chọn trong trường hợp này.

Tôi đã đọc các phiên bản trước đó của git cung cấp thông tin xác thực "cửa hàng" và "bộ nhớ cache", nhưng điều này không được thông báo vì nó đã lưu trữ mật khẩu trong văn bản thuần túy.

NHƯNG 

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

Tôi đã thử sau khác (không phải Ubuntu) câu trả lời trên SO để có được điều này để làm việc (cụ thể là cái này), nhưng tôi vẫn hiển thị lời nhắc tên người dùng và mật khẩu.

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


26
2018-05-17 00:12


gốc


Bạn nên đề cập đến phương pháp nào bạn đã thử. Nếu không, bạn có thể tìm thấy câu trả lời cho thấy chính xác những câu trả lời đó. - muru
@muru Tại sao bạn đã loại bỏ sự nhấn mạnh mà tôi đã thêm vào để dễ đọc? Bây giờ nó chỉ là một blob của văn bản và những lý do mà phân biệt các câu hỏi từ những người khác và câu hỏi thực tế là ít rõ ràng hơn. - tudor
An toàn thể câu in đậm và italicised là khó đọc. - muru
@muru tôi cầu xin sự khác biệt. Tôi thấy văn bản in đậm và in nghiêng sẽ đưa ra những phần thiết yếu của câu hỏi. - tudor


Các câu trả lời:


gnome-credential-helper hiện không được chấp nhận.

Thay vào đó, sử dụng libsecret. Nếu nó chưa sẵn sàng trong ubuntu của bạn, hãy sử dụng quy trình sau:

  1. Bạn có thể cài đặt libsecret và 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 điểm git vào tệp mới được 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


16
2017-09-26 16:31



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 (khi đó thư mục libsecret có thể được tìm thấy) - Charles Roberto Canato
Điều này có an toàn không? Những bí mật được lưu trữ ở đâu? Cả truyền và lưu trữ có an toàn không? Có tài liệu chính thức nào không? Rõ ràng, theo trang này và trang này, nó nằm trong “Chính” và được Debian / Ubuntu duy trì. Và: “Nó liên lạc với 'Dịch vụ bí mật' sử dụng DBus.” - caw
@caw: Trong GNOME, "Dịch vụ bí mật" là cùng một trình khóa-gnome-daemon, chỉ thông qua một API khác. (Kế hoạch libsecret là cho phép các DE khác xây dựng các chương trình phụ trợ của riêng họ hỗ trợ cùng một API, ví dụ: KDE đã lên kế hoạch thực hiện điều này trong kwalletd.) - grawity
Cập nhật câu trả lời ưa thích của tôi khi tôi có thể xác minh điều này hoạt động trên 18.04. :) - tudor


Bạn cần phải thiết lập git credential helper với Gnome Keyring:

Cài đặt và biên dịch Gnome Keyring devel:

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

37
2018-05-23 11:14



Thật kỳ quặc. Về mặt ngữ nghĩa, không 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 đối với một số lý do câu trả lời này hoạt động nơi khác không. - tudor
Sau đó chạy git push hoặc là git pull như bình thường và lần đầu tiên nó sẽ hỏi cửa hàng ansd, và mỗi lần sau đó nó sẽ lấy nó từ keyring. Để xác minh nó, hãy chạy seahorse. Nó sẽ được liệt kê dưới "Mật khẩu" -> "Đăng nhập". - tudor
@ tudor Thật kỳ 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à câu trả lời liên kết. Vui mừng 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! - DaveTheScientist