วิธีการป้อนคำสั่งด้วยรหัสผ่านสำหรับ git pull?


140

ฉันต้องการทำคำสั่งนี้ในหนึ่งบรรทัด:

git pull && [my passphrase]

ทำอย่างไร?


คุณสามารถเปลี่ยนข้อความรหัสผ่านของคุณให้ว่างได้โดยทำตามนี้: help.github.com/articles/working-with-ssh-key-passphrases
jacerate

1
คุณสามารถก้าวเท้าเลี่ยงความจำเป็นที่จะต้องพิมพ์วลีรหัสผ่านถ้าคุณเรียกใช้เอเจนต์ ssh ครั้งแรกที่คุณทำ git pull คุณทำมันแบบโต้ตอบและเอเจนต์ ssh จะจดจำคีย์ส่วนตัวของคุณและคุณสามารถเรียกใช้ git pull ได้โดยไม่ต้องมีการถาม
Tim Finer

คำตอบ:


162

นี่ไม่ใช่สิ่งที่คุณต้องการ แต่สำหรับ http:

  • คุณสามารถใส่รหัสผ่านในไฟล์. netrc (_netrc บน windows) จากนั้นมันจะถูกหยิบขึ้นมาโดยอัตโนมัติ มันจะไปที่โฟลเดอร์บ้านของคุณด้วยสิทธิ์ 600
  • คุณสามารถโคลน repo ด้วยhttps://user:pass@domain/repoแต่ไม่แนะนำจริง ๆ เพราะมันจะแสดงผู้ใช้ของคุณ / ผ่านในหลายสถานที่ ...
  • ตัวเลือกใหม่คือการใช้ผู้ช่วยการรับรอง โปรดทราบว่าข้อมูลประจำตัวจะถูกเก็บไว้ในข้อความที่ชัดเจนในการกำหนดค่าท้องถิ่นของคุณโดยใช้ผู้ช่วยหนังสือรับรองมาตรฐาน ผู้ช่วยหนังสือรับรองพร้อม wincred สามารถใช้บน windows

ตัวอย่างการใช้งานสำหรับผู้ช่วยข้อมูลรับรอง

  • git config credential.helper store - เก็บหนังสือรับรองอย่างไม่มีกำหนด
  • git config credential.helper 'cache --timeout=3600'- เก็บเป็นเวลา 60 นาที

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


1
คุณสามารถอธิบายรายละเอียดในส่วนของ SSH ได้ไหม? ฉันกำลังกำหนดค่าอินสแตนซ์ EC2 และฉันต้องการให้ดึงโดยไม่ต้องขอรหัสผ่านของฉันและการปรับขนาดอัตโนมัติของ AWS โครงการสาธารณะ / ส่วนตัวนี้ดูเหมือนเป็นทางออกที่ดี
Pedro Dusso

1
@PedroDusso เสียงเหมือนหัวข้อนี้เป็นสิ่งที่คุณหลังจาก
EIS

2
ฉันสิ้นสุดการใช้กลไกการปรับใช้คีย์ซึ่งดูเหมือนจะเป็นทางออกที่ดี ขอบคุณ!
Pedro Dusso

129

ฉันพบวิธีหนึ่งในการจัดหาข้อมูลรับรองสำหรับการเชื่อมต่อ https บนบรรทัดคำสั่ง คุณเพียงแค่ต้องระบุ URL ที่สมบูรณ์เพื่อดึง git และรวมข้อมูลรับรองที่นั่น:

git pull https://username:password@mygithost.com/my/repository

คุณไม่จำเป็นต้องมีที่เก็บข้อมูลโคลนด้วยข้อมูลรับรองก่อนหน้านี้ซึ่งหมายความว่าข้อมูลรับรองของคุณไม่จบลง.git/configด้วย (แต่ให้แน่ใจว่าเชลล์ของคุณไม่ได้ทรยศคุณและเก็บบรรทัดคำสั่งไว้ในไฟล์ประวัติ)


ไม่จำเป็นต้องใช้รหัสผ่านและไม่ปลอดภัยในการเขียนรหัสผ่านด้วยวิธีนี้
ดาวตก

นี่ไม่ใช่หนึ่งในสิ่งที่ฉันระบุไว้ในคำตอบที่ยอมรับแล้วในปี 2012?
EIS

8
@eis: ไม่แน่นอน ประเด็นคือคุณไม่จำเป็นต้องโคลนที่เก็บข้อมูลด้วย URL ที่มีข้อมูลรับรอง แต่ยังสามารถดึงข้อมูลจาก URL ที่มีข้อมูลรับรองได้ ผลกระทบคือข้อมูลรับรองไม่ได้จบลงในไฟล์. git / config
holgero

5
หากคุณข้าม:passwordส่วนนี้คุณจะได้รับแจ้งรหัสผ่านหลังจากกดปุ่ม Enter ด้วยวิธีนี้รหัสผ่านของคุณจะไม่ถูกบันทึกในประวัติทุบตี
Matthias Fischer

1
ใช่ @PramodGarg ใช้ - ชื่อผู้ใช้ git pull : password@mygithost.com/my/repository.gitสาขา
PAVITRA

39

ไม่ตอบคำถามโดยตรง แต่ผมพบว่าคำถามนี้เมื่อค้นหาวิธีการโดยทั่วไปไม่ได้ป้อนรหัสผ่านทุกครั้งเดียวฉันดึงบนเซิร์ฟเวอร์ระยะไกล

ดีgitช่วยให้คุณแคชข้อมูลประจำตัวของคุณเป็นระยะเวลา จำกัด มันสามารถปรับแต่งได้git configและหน้านี้อธิบายได้ดีมาก:

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

ในเทอร์มินัลให้รัน:

$ git config --global credential.helper cache
# Set git to use the credential memory cache

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

$ git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)

ข้อมูลประจำตัวของคุณจะถูกเก็บไว้ในหน่วยความจำตามระยะเวลาที่ร้องขอ


5

โปรดทราบว่าวิธีที่ตัวช่วยข้อมูลประจำตัว git "store" จะจัดเก็บการเปลี่ยนแปลงรหัสผ่านที่ไม่ได้เข้ารหัสด้วย Git 2.5+ (Q2 2014)
ดูคอมมิชชัน 17c7f4dโดยJunio ​​C Hamano ( gitster)

credential-xdg

ปรับstoreแบ็กเอนด์ตัวอย่าง " " ของเครื่องมือช่วยข้อมูลรับรองเพื่อให้เกียรติตำแหน่งไฟล์ตั้งค่า XDG เมื่อมีการระบุ

ตอนนี้หมอพูดว่า:

หากไม่ได้ระบุ:

  • ข้อมูลประจำตัวจะถูกค้นหาจาก~/.git-credentialsและ$XDG_CONFIG_HOME/git/credentials, และ
  • ข้อมูลประจำตัวจะถูกเขียนถึง~/.git-credentialsหากมีอยู่หรือ$XDG_CONFIG_HOME/git/credentialsหากมีอยู่และข้อมูลในอดีตไม่ได้

1

cmd ด้านล่างจะทำงานหากเราไม่มี @ ในรหัสผ่าน: git pull https://username:pass@word@mygithost.com/my/repository หากคุณมี @ ในรหัสผ่านให้แทนที่ด้วย% 40 ตามที่แสดงด้านล่าง: git pull https://username:pass%40word@mygithost.com/my/repository

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