วิธีที่ถูกต้องในการใช้ git กับ gnome-keyring และ http (s) repos คืออะไร?


43

ปัจจุบันเมื่อใดก็ตามที่ฉันgit pullหรือgit pushไปยังที่เก็บ http (ฉัน) ฉันได้รับต่อไปนี้:

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

สิ่งนี้ใช้ได้สำหรับการใช้งานไม่บ่อยนัก แต่เริ่มกลายเป็นที่น่ารำคาญอย่างรวดเร็ว น่าเสียดายที่การสลับไปใช้ ssh ไม่ใช่ตัวเลือกในกรณีนี้

ฉันได้อ่านแล้วว่าเวอร์ชันก่อนหน้าของการgitให้ข้อมูลรับรอง "ร้านค้า" และ "แคช" แต่สิ่งนี้ไม่แนะนำเพราะมันเก็บรหัสผ่านเป็นข้อความธรรมดา

แต่

gitเห็นได้ชัดว่าเวอร์ชั่นใหม่ของการจัดเก็บข้อมูลประจำตัว git ในgnome-keyringแต่จะต้องตั้งค่าอย่างถูกต้อง

ฉันได้ลองทำตามคำตอบอื่น ๆ (ที่ไม่ใช่อูบุนตู) บน SO เพื่อให้มันใช้งานได้ (เช่นอันนี้ ) แต่ฉันยังคงแสดงพร้อมท์ชื่อผู้ใช้และรหัสผ่าน

วิธีที่ถูกต้องและปลอดภัยที่สุดในการจัดเก็บgitข้อมูลรับรองสำหรับ repos http (s) คืออะไรและทำให้พวกเขาทำงานบน Ubuntu ได้อย่างไร


คุณควรพูดถึงวิธีการที่คุณลอง มิฉะนั้นคุณอาจพบคำตอบที่แนะนำอย่างแน่นอน
muru

@muru ทำไมคุณถึงลบการเน้นที่ฉันเพิ่มเพื่อให้สามารถอ่านได้? ตอนนี้มันเป็นเพียงแค่ข้อความและเหตุผลที่ทำให้คำถามแตกต่างจากคนอื่นและคำถามจริงนั้นไม่ชัดเจน
tu-Reinstate Monica-dor duh

ทั้งประโยคเป็นตัวหนาและเอียงคือแทบจะไม่สามารถอ่านได้
muru

1
@muru ฉันขอแตกต่างกัน ฉันพบว่าข้อความที่เป็นตัวหนาและตัวเอียงแสดงถึงส่วนสำคัญของคำถาม
tu-Reinstate Monica-dor duh

คำตอบ:


45

gnome-credential-helper เลิกใช้แล้ว

ใช้ libsecret แทน หากยังไม่ได้ติดตั้งอูบุนตูของคุณให้ใช้ขั้นตอนต่อไปนี้:

  1. คุณสามารถติดตั้งlibsecretและพัฒนาไลบรารีด้วย:

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

  2. จากนั้นคุณต้องสร้างตัวจัดการข้อมูลประจำตัว

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

    sudo make

  3. สุดท้ายคุณควรชี้gitไปยังไฟล์ที่สร้างขึ้นใหม่ในการกำหนดค่าของคุณ:

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

รายละเอียดเพิ่มเติมเกี่ยวกับhttps://stackoverflow.com/a/40312117/2017781


1
คุณอาจต้องการทราบว่าวิธีนี้ใช้ได้เฉพาะกับรุ่น git> = 2.11 (โดยที่อาจพบ libsecret dir)
Charles Roberto Canato

1
ปลอดภัยไหม ความลับถูกเก็บไว้ที่ไหน? ทั้งการส่งและการเก็บรักษาปลอดภัยหรือไม่? มีเอกสารอย่างเป็นทางการหรือไม่? เห็นได้ชัดว่าตามหน้านี้และหน้านี้มันอยู่ใน“ หลัก” และดูแลโดย Debian / Ubuntu และ:“ มันสื่อสารกับ 'หน่วยสืบราชการลับ' โดยใช้ DBus”
caw

1
@caw: ใน GNOME "Secret Service" เป็น gnome-keyring-daemon เดียวกันโดยใช้ API อื่น (แผน libsecret อนุญาตให้ DE อื่นสร้างแบ็กเอนด์ของตนเองที่สนับสนุน API เดียวกันเช่น KDE วางแผนที่จะใช้สิ่งนี้ใน kwalletd)
grawity

5
อัปเดตคำตอบที่ต้องการเพราะฉันสามารถตรวจสอบงานนี้ได้ที่ 18.04 :)
tu-Reinstate Monica-dor duh

44

คุณต้องตั้งค่าคอมไพล์credential helperด้วย Gnome Keyring:

ติดตั้งและรวบรวม Gnome Keyring devel:

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

และตั้งค่าข้อมูลรับรอง:

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

มันแปลกจริงๆ ความหมายไม่ควรมีความแตกต่างระหว่างคำตอบในลิงค์และคำตอบนี้ แต่ด้วยเหตุผลบางอย่างคำตอบนี้ใช้ได้ผลที่คนอื่นไม่ได้
tu-Reinstate Monica-dor duh

จากนั้นเรียกใช้git pushหรือgit pullตามปกติและเป็นครั้งแรกที่มันจะถามร้านค้า ansd และทุกครั้งหลังจากนั้นมันจะได้รับมันจากพวงกุญแจ seahorseหากต้องการตรวจสอบมันทำงาน มันควรจะอยู่ภายใต้ "รหัสผ่าน" -> "เข้าสู่ระบบ"
tu-Reinstate Monica-dor duh

@ ทิวดอร์มันแปลกฉันไม่เห็นความแตกต่าง "ความคิด" ระหว่างคำตอบของฉันและลิงค์หนึ่ง ดีใจที่มันช่วย

ดูเหมือนว่าแปลกสำหรับฉันที่คุณยังต้องเรียกใช้คำสั่ง "make" แต่ขั้นตอนเหล่านี้ใช้งานได้ดี ขอบคุณ!
DaveTheScientist

2

วิธีการง่าย ๆ นี้ดูเหมือนจะเพียงพอใน Ubuntu 18.04.1 ของฉันกับ git 2.17.1:

git config --global credential.helper cache

คุณสามารถระบุการหมดเวลาหนึ่งชั่วโมง (= 3600 วินาที) เช่นนี้:

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

อ่านเพิ่มเติมในคู่มือการปรับ

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