ฉันจะทำการ "git pull" โดยไม่ต้องป้อนรหัสผ่าน SSH ซ้ำได้อย่างไร


98

มันเป็นไปได้ในการกำหนดค่าgit/sshดังนั้นผมจึงไม่ต้องป้อนข้อความรหัสผ่านของฉันเวลาที่ฉันต้องการที่จะดำเนินการทุกgit pull? โปรดทราบว่า repo เป็นแบบส่วนตัวบน github

หรืออีกวิธีหนึ่งคือแนวทางปฏิบัติที่ดีที่สุดในการปรับใช้โค้ดโดยอัตโนมัติจากที่เก็บ Github ส่วนตัวคืออะไร

รายละเอียดเพิ่มเติม:อินสแตนซ์ EC2 ที่เรียกใช้ AMI สาธารณะที่ใช้ Fedora


2
อาจซ้ำกันของการกำหนดค่า Git ผ่าน SSH
meagar

คุณมีทางออกของปัญหานี้หรือไม่?
นิม

ณ git 2.11+ (ไตรมาสที่ 4 ปี 2016) โดยใช้ libsecret เป็นอีกวิธีหนึ่ง: stackoverflow.com/a/40312117/8477066
Hielke Walinga

คำตอบ:


71

ดูลิงค์นี้https://help.github.com/articles/working-with-ssh-key-passphrases/

แต่ฉันไม่ต้องการป้อนข้อความรหัสผ่านยาว ๆ ทุกครั้งที่ใช้คีย์!

ฉันก็ไม่! โชคดีที่มีเครื่องมือเล็ก ๆ น้อย ๆ ที่เรียก ssh-agentว่าสามารถบันทึกข้อความรหัสผ่านของคุณได้อย่างปลอดภัยดังนั้นคุณจึงไม่ต้องป้อนซ้ำ หากคุณใช้ OSX Leopard หรือใหม่กว่าคุณสามารถบันทึกคีย์ของคุณไว้ในพวงกุญแจของระบบเพื่อให้ชีวิตของคุณง่ายยิ่งขึ้น การติดตั้ง linux ส่วนใหญ่จะเริ่ม ssh-agent ให้คุณโดยอัตโนมัติเมื่อคุณเข้าสู่ระบบ


3
ประหม่าเล็กน้อยที่ตอบคนที่มีชื่อเสียง 17.7k; ฉันตีความคำถามผิดหรือเปล่า ... ;-)
Fredrik Pihl

3
ประหม่า? มั่นใจได้ว่าคนส่วนใหญ่ที่นี่มีมารยาทค่อนข้างดี ... และคนที่ไม่ดีก็มีปัญหาใหญ่กว่าฉัน :)
jldupont

2
ลิงค์นี้มีประโยชน์ในการอธิบายว่าคำสั่งใดที่ต้องรันเพื่อให้ข้อความรหัสผ่านของคุณถูกบันทึกในssh-agent: rabexc.org/posts/using-ssh-agent
Mateus Gondim

ฉันไม่ต้องการใช้คีย์ ง่าย ๆ ฉันมี user \ pass และฉันต้องการบันทึกไว้ที่ฝั่งไคลเอนต์ git
nim

เหตุใดลิงก์จึงมีเฉพาะตัวเลือก Mac / Widows เท่านั้น ฉันต้องการ git ดึงบนเซิร์ฟเวอร์ unix โดยไม่ต้องป้อนรหัสผ่านอีกครั้ง จัดการให้มันใช้งานได้สำหรับโครงการประวัติศาสตร์ แต่ไม่สามารถบอกได้ว่าฉันทำอะไรที่นั่น เป็นจุดที่เมื่อคุณ ssh ไปยังเครื่อง unix ระยะไกลคีย์จะถูกส่งต่อและใช้เป็นคีย์ git pull (หรือ vcs ผู้แต่งส่วนตัว) แทนหรือไม่? ฉันเชื่อว่าฉันเข้าใจผิดบางอย่างที่นี่ ความช่วยเหลือใด ๆ ชื่นชม :)
trainoasis

32

ฉันเปิดใช้งานการแคชรหัสผ่านตามที่อธิบายไว้ที่นี่:

https://help.github.com/articles/caching-your-github-password-in-git/#platform-linux

ในการแคชรหัสผ่านเป็นเวลาหนึ่งเดือน:

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

ขอบคุณ temuri - ฉันมองหารายละเอียดที่แน่นอนนี้ทุกที่ มันใช้งานไม่ได้ แต่ดูเหมือนว่าเอกสารจะไม่ได้ระบุว่ามันใช้สำหรับ HTTPS เท่านั้น
Mike Emery

2
หากคุณใช้รหัสผ่าน ( ไม่ใช่รหัสผ่านที่มีไฟล์คีย์) สำหรับ URL ที่อิง SSH ของ Git repo ระยะไกลคุณจะไม่สามารถบันทึกรหัสผ่านได้เลย แต่ฉันสังเกตว่าหลังจากออกคำสั่ง git แล้วคุณสามารถพิมพ์รหัสผ่านและกด Enterได้ทันที คุณไม่จำเป็นต้องรอให้รหัสผ่านปรากฏขึ้น
ADTC

1
git still ask pass
nim

12

ลองสิ่งนี้:

git config credential.helper store

คุณจะต้องป้อนรหัสผ่านของคุณหนึ่งครั้งหลังจากนั้นจะถูกเก็บไว้ในโฟลเดอร์ภายในรูท

ตามที่แสดงความคิดเห็นสิ่งนี้ใช้ไม่ได้กับรหัสผ่าน SSH สำหรับรหัสผ่าน HTTPS เท่านั้น


1
@nim นั่นไม่ได้หมายความว่าคุณควรลงคะแนนคำตอบฉันแนะนำสิ่งที่ได้ผลสำหรับฉันและใครบางคนอาจพบว่ามันมีประโยชน์
Yankee

ไม่มีการบันทึกรหัสผ่าน ฉันลองแล้วไม่มีผลอะไร ถ้าคุณรีโมตเช่นนี้ ssh: // name @ ip / path
nim

1
ใช้งานได้หากคุณต้องการจัดเก็บรหัสผ่านการตรวจสอบสิทธิ์พื้นฐานของ HTTP
ฟิลิป

4
ใช้ไม่ได้กับรหัสผ่าน SSH สำหรับรหัสผ่าน HTTPS เท่านั้น
Eliezer Berlin

ใช้งานได้ดีสำหรับ https คุณต้องพิมพ์สิ่งนี้ในครั้งต่อไปควรเป็นครั้งสุดท้ายที่คุณต้องป้อนการถอดความ ในครั้งต่อไปควรจำรหัสผ่านด้วย git
Jonathan

7

ตอนนี้สถานการณ์ของคุณได้รับการแก้ไขแล้วอย่างไรก็ตามสำหรับฉันมันเป็นความจริงที่ว่าฉันมีมากกว่าหนึ่งคีย์ ~/.ssh/

ในการแก้ไขปัญหาฉันต้องสร้างไฟล์ที่เรียก~/.ssh/configและเพิ่มบรรทัด:

IdentityFile ~/.ssh/my_key2_rsa

~/.ssh/my_key2_rsaกุญแจของฉันอยู่ที่ไหน


1
ขอบคุณสำหรับสิ่งนี้ my id_rsa และid_rsa.pubfiles มีชื่อที่กำหนดเองซึ่งเป็นสาเหตุที่ git ไม่เคยรู้จัก ref: linux.die.net/man/5/ssh_config
lasec0203

7

ฉันไม่รู้ว่าทำไมยังไม่มีใครรายงานเรื่องนี้ แต่วิธีที่ง่ายที่สุดก็แค่เพิ่มบรรทัดเดียวAddKeysToAgent yesที่ด้านบนของไฟล์. ssh / config แน่นอนssh-agentต้องทำงานก่อน หากไม่ทำงาน (ตรวจสอบตามคำสั่งssh-agentบนเทอร์มินัล) จากนั้นเรียกใช้eval $(ssh-agent)

ฉันสามารถยืนยันได้ว่ามันใช้งานได้เพราะในโครงการของฉันมีโมดูลย่อยจำนวนมากและสำหรับแต่ละโมดูลย่อยที่ถูกโคลนฉันต้องพิมพ์ข้อความรหัสผ่าน ssh ของฉัน หลังจากเคล็ดลับข้างต้นฉันไม่จำเป็นต้องทำอีกต่อไป

แหล่งที่มาของการแก้ปัญหาคือ/ubuntu/362280/enter-ssh-passphrase-once/853578#853578


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