วิธีใช้ git กับ gnome-keyring integration


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 (คอมไพล์ 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!
Eugene Kulabuhov

4
ต้องทำchmod 0755 git-credential-gnome-keyringเพื่อเพิ่มสิทธิ์การดำเนินการให้กับผู้อื่นที่ไม่ใช่รูท
Lari Hotari

8
ยังคงใช้ได้กับ Ubuntu 16.04 LTS
Eugene Kulabuhov

54

Git 1.8.0 มาพร้อมกับการสนับสนุน gnome-keyring แต่จำเป็นต้องรวบรวมไบนารีสำหรับแพลตฟอร์มของคุณ

นี่คือสิ่งที่แก้ไขได้สำหรับฉันใน 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 ควรชี้ไปที่ไฟล์ปฏิบัติการ นั่นเป็นเหตุผลว่าทำไมมันถึงไม่ได้ผลสำหรับฉัน


ฉันได้จัดรูปแบบคำตอบใหม่เพื่อให้สอดคล้องกับข้อสรุปของคุณ ฉันได้สร้างมันแล้ว (มันไม่ได้สร้างโดยค่าเริ่มต้นใน git 1.8 distro ของฉัน) และทดสอบเมื่อเช้านี้ มันทำงาน
VonC

1
หากคุณได้รับPackage gnome-keyring-1 was not found in the pkg-config search path.คุณจะไม่มีไลบรารี dev สำหรับ 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 อย่างเป็นทางการ
Johann

1
สิ่งนี้อธิบายได้ดีว่าทำไมแพ็คเกจ aur git-credential-gnomekeyringจึงหายไปแย่มากที่ใน AUR ไม่มีข้อมูลดังกล่าว
ryenus

บน Ubuntu ฉันไม่มีโฟลเดอร์ git ใน/usr/share/... มีเพียง gitweb และ git-core แต่ฉันใช้ Git 1.7.9 นั่นอาจเป็นเพราะเหตุใด ... ?
Temporary_user_name

1
ในปี 2017 บน Arch การติดตั้งlibgnome-keyringก็เพียงพอแล้ว (อย่างน้อยถ้าคุณใช้ gnome)
ald.li

25

อัปเดตไตรมาสที่ 4 ปี 2559:

  • 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 Credential Manager ล่าสุดสำหรับ Windows )


คำตอบเดิม (2012)

ข้อมูลประจำตัวที่ผู้ช่วยสำหรับ Windows, Mac และ Unix แพลตฟอร์มได้รับการแนะนำครั้งแรกใน"Git-ข้อมูลรับรองผู้ช่วย" repo , ซึ่งขณะนี้ได้รับการรวมอยู่ในคอมไพล์ 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 พวงกุญแจ 0.10 .
แต่ที่เป็น back-end และคุณไม่ได้ใช้มันโดยตรงจาก Git

สิ่งที่คุณใช้คือ "ตัวช่วยข้อมูลรับรอง" (ซึ่งในทางกลับกันจะเรียกAPI ข้อมูลรับรองที่ต้องการบน Windows )

GitHub สำหรับ Windowsมีตัวช่วย (เรียกว่าปฏิบัติการที่เรียกว่า ... github) และสามารถจัดเก็บข้อมูลประจำตัวของคุณในช่วงเซสชัน Windows
เปิดเชลล์จากหน้าต่าง "GitHub for 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

อัปเดตตุลาคม 2561

GNOME ได้เลิกใช้งาน libgnome-keyring และแทนที่ด้วย libsecret Commit https://github.com/git/git/commit/87d1353a6aเพิ่มใหม่หนังสือรับรองผู้ช่วย / usr / libexec / Git-core / Git-ข้อมูลประจำตัว-libsecret

git config --global credential.helper libsecret


2
อาจเป็นไปได้ว่านี่ควรเป็นความคิดเห็นเกี่ยวกับคำตอบจาก gnome-keyring ที่นี่
Murmel

เห็นด้วยgnome-keyringควรแก้ไขคำตอบตาม อาจจะยกเว้นตัวเลือกทั้งหมด นั่นไม่ได้ผลเลยสำหรับฉันบน Ubuntu 19.10
Mario

11

สำหรับทุกคนใน Fedora ฉันแก้ไขคำตอบของ James Ward เล็กน้อย:

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 คอมไพล์ 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 สำหรับเวอร์ชันเก่าหรือ OS / distros อื่น ๆ โปรดดูคำตอบอื่น ๆ


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

@ Saibot: อ๊ะคุณพูดถูก ดูเหมือนว่า Fedora / RHEL จะให้สิ่งนี้ แต่ Ubuntu ไม่มี ดังนั้นคำตอบของ James Ward ( stackoverflow.com/a/14528360/2148773 ) จึงดีกว่าในกรณีนั้น
oliver

2

การแจกแจงบางอย่างมาพร้อมกับการรวมนี้เป็นแพ็คเกจการติดตั้งโดยไม่ต้องมีการคอมไพล์ใด ๆ ขึ้นอยู่กับเวอร์ชันของ GNOME ของคุณคุณจะต้องติดตั้งแพ็คเกจอย่างใดอย่างหนึ่งgnome-keyringหรือหลายlibsecretเวอร์ชันเช่นgit-credential-gnome-keyring(OpenSUSE Leap 42.3)

อย่างไรก็ตามสิ่งนี้จะไม่เปิดใช้งานการรวม Git กับ GNOME Keyring โดยอัตโนมัติ คุณยังต้องกำหนดค่า 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ตัวเลือกนี้ไม่ได้ผลสำหรับฉันอีกต่อไป แต่คำสั่งของ James Ward ที่ใช้libsecretยังคงใช้งานได้ดี อย่างไรก็ตามฉันรู้สึกสับสนกับคำแนะนำให้ใช้gnome-keyringที่นี่: github.com/timhughes/git-credential-libsecret
Mario

libsecret(หรือสิ่งที่find /usr -iname git-credential-libsecretให้) เป็นตัวเลือกที่เหมาะสมใน Gentoo Linux โปรดทราบว่าจะต้องโผล่ออกมาด้วยdev-vcs/git USE=gnome-keyring
sphakka

1

บน Fedora คุณต้องติดตั้ง

$ sudo dnf install git-credential-libsecret

และแก้ไขการกำหนดค่าคอมไพล์ของคุณเพื่อใช้ตัวช่วยข้อมูลรับรอง

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

FYI libsecretแพคเกจเพิ่งได้รับการแยกออกมาดูโพสต์จาก @rugk นั่นเป็นเหตุผลที่ผู้ใช้ต้องติดตั้งแพ็คเกจนี้ใหม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.