วิธีบันทึกชื่อผู้ใช้และรหัสผ่านใน git [GitExtension]


1236

ฉันต้องการใช้การพุชและดึงโดยอัตโนมัติในGitExtensionโดยไม่ต้องป้อนชื่อผู้ใช้และรหัสผ่านในทุกครั้ง

ดังนั้นฉันจะบันทึกข้อมูลประจำตัวของฉันในคอมไพล์ได้อย่างไร


1
นอกจากนี้คุณยังสามารถตรวจสอบผ่าน SSH: stackoverflow.com/questions/6565357/…
Anton Tarasenko


1
@AntonTarasenko gitconfig ของฉันไม่ได้พูดอะไรเกี่ยวกับ Proxy เพียง [ผู้ใช้] email = email@dummy.com ชื่อ = uname [หนังสือรับรอง] ผู้ช่วย = store
gc7__

คำตอบ:


2201

วิ่ง

git config --global credential.helper store

แล้วก็

git pull

ระบุชื่อผู้ใช้และรหัสผ่านจากนั้นรายละเอียดเหล่านั้นจะถูกจดจำในภายหลัง ข้อมูลประจำตัวจะถูกเก็บไว้ในไฟล์บนดิสก์ด้วยสิทธิ์ดิสก์ของ "ผู้ใช้เพียงแค่อ่าน / เขียนได้" แต่ยังคงอยู่ใน plaintext

หากคุณต้องการเปลี่ยนรหัสผ่านในภายหลัง

git pull

จะล้มเหลวเนื่องจากรหัสผ่านไม่ถูกต้องคอมไพล์จึงลบผู้ใช้ + รหัสผ่านที่ละเมิดออกจาก~/.git-credentialsไฟล์ดังนั้นตอนนี้ให้เรียกใช้อีกครั้ง

git pull

เพื่อให้รหัสผ่านใหม่เพื่อให้ทำงานได้เร็วขึ้น


6
แฟล็ก -u สำคัญอย่างไรในการเปลี่ยนรหัสผ่านในภายหลัง
lucidbrot

8
สำหรับ Debian / Ubuntu ให้ใช้ libsecret stackoverflow.com/questions/36585496/…
rofrol

3
@lucidbrot ขอโทษที่ตอบช้า git pull -u ไม่ทำงานกับเวอร์ชั่นล่าสุด ฉันได้อัพเดตคำตอบแล้ว หวังว่ามันจะตอบคำถามของคุณ
Neetika

51
โปรดทราบว่าสิ่งนี้จะเก็บชื่อผู้ใช้และรหัสผ่านของคุณในไฟล์ข้อความธรรมดาที่ ~ / .git-credentials ทุกคนสามารถเปิดและอ่านได้
RoboAlex

12
มันใช้งานไม่ได้ มันล้มเหลวในการดึง
Urasquirrel

348

คุณสามารถใช้git configเพื่อเปิดใช้งานการจัดเก็บข้อมูลรับรองในคอมไพล์

git config --global credential.helper store

เมื่อเรียกใช้คำสั่งนี้ครั้งแรกที่คุณดึงหรือดันจากที่เก็บระยะไกลคุณจะได้รับคำถามเกี่ยวกับชื่อผู้ใช้และรหัสผ่าน

หลังจากนั้นสำหรับการสื่อสารที่เกิดขึ้นกับที่เก็บระยะไกลคุณไม่จำเป็นต้องระบุชื่อผู้ใช้และรหัสผ่าน

รูปแบบการจัดเก็บเป็น.git-credentialsไฟล์ที่เก็บในรูปแบบธรรมดา

นอกจากนี้คุณสามารถใช้ตัวช่วยอื่นสำหรับgit config credential.helperแคชหน่วยความจำคือ:

git config credential.helper cache <timeout>

ซึ่งใช้ตัวเลือกtimeout parameterกำหนดระยะเวลาที่จะเก็บข้อมูลรับรองในหน่วยความจำ การใช้ผู้ช่วยข้อมูลรับรองจะไม่แตะดิสก์และจะถูกลบหลังจากหมดเวลาที่ระบุ defaultค่า900 seconds (15 minutes).


คำเตือน : หากคุณใช้วิธีนี้รหัสผ่านบัญชี git ของคุณจะถูกบันทึกในplaintextรูปแบบglobal .gitconfig fileเช่นใน linux มันจะเป็น/home/[username]/.gitconfig

หากคุณไม่พึงประสงค์ให้ใช้ssh keyบัญชีของคุณแทน


3
หวังว่าคุณจะแสดงไฟล์. gitconfig - คำสั่งแรกถูกเขียนทับโดยที่สอง :(
Adam

3
สำหรับgit config credential.helper cacheรหัสผ่านจะไม่ถูกบันทึกลงในไฟล์เก็บไว้ในหน่วยความจำเท่านั้น ดู: git-scm.com/docs/git-credential-cache
SA

1
ไม่ทำงาน, ไม่เป็นผล. ให้ร้ายแรง: การตรวจสอบสิทธิ์ล้มเหลว ไม่ขอรหัสผ่านด้วยซ้ำ
Philip Rego

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

ฉันจะใช้สิ่งนี้กับ gitlab ได้อย่างไร
anil

170

วิธีที่แนะนำและปลอดภัย: SSH

สร้างคีย์ ssh Github ไปที่github.com -> การตั้งค่า -> คีย์ SSH และ GPG -> คีย์ SSH ใหม่ ตอนนี้บันทึกรหัสส่วนตัวของคุณลงในคอมพิวเตอร์ของคุณ

จากนั้นหากบันทึกไพรเวตคีย์เป็นid_rsaในไดเรกทอรี~ / .ssh /เราจะเพิ่มรหัสนั้นเพื่อรับรองความถูกต้องเช่น:

ssh-add -K ~/.ssh/id_rsa


วิธีที่ปลอดภัยยิ่งขึ้น: การแคช

เราสามารถใช้ git-credential-store เพื่อแคชชื่อผู้ใช้และรหัสผ่านของเราเป็นระยะเวลาหนึ่ง เพียงป้อนข้อมูลต่อไปนี้ใน CLI ของคุณ (เทอร์มินัลหรือพร้อมรับคำสั่ง):

git config --global credential.helper cache

นอกจากนี้คุณยังสามารถกำหนดระยะเวลาการหมดเวลา (เป็นวินาที) เช่น:

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


วิธีการที่ปลอดภัยน้อยลง

อาจใช้ Git-credential-store แต่จะบันทึกรหัสผ่านในไฟล์ข้อความธรรมดาบนดิสก์ของคุณเช่น:

git config credential.helper store


คำตอบที่ล้าสมัย - รวดเร็วและไม่ปลอดภัย

นี่เป็นวิธีที่ไม่ปลอดภัยในการจัดเก็บรหัสผ่านของคุณเป็นข้อความธรรมดา หากมีคนควบคุมคอมพิวเตอร์ของคุณรหัสผ่านของคุณจะถูกเปิดเผย!

คุณสามารถตั้งชื่อผู้ใช้และรหัสผ่านดังนี้:

git config --global user.name "your username"

git config --global user.password "your password"

15
สิ่งนี้ไม่ได้ผลสำหรับฉัน git โคลนยังคงถามชื่อผู้ใช้และรหัสผ่าน
Oliver

11
ฉันไม่แนะนำให้เก็บรหัสผ่านของคุณเช่นนี้เพราะ "git config --global -l" จะเปิดเผยรหัสผ่านของคุณบนคอนโซล
CCC

1
มันไม่ทำงานสำหรับฉัน มันแปลกที่มันควรจะทำงานให้กับทุกคนตั้งแต่ในสเปคของ
Hamish Todd

.gitconfig เป็นไฟล์ที่แตกต่าง: .git-credentials ที่อยู่ในโฟลเดอร์บ้านของคุณมี URL ที่จะ repo ด้วยชื่อผู้ใช้และรหัสผ่านใน URL เช่นเดียวกับ git: // ชื่อผู้ใช้: รหัสผ่าน @ server / git / repo โปรดใช้ความระมัดระวัง ข้อความรหัสผ่าน ใช้ "git config --global credential.helper cache" หากคุณไม่สามารถใช้คีย์ ssh ได้
skabbit

เมื่อฉันพยายามที่จะเพิ่มผู้ใช้และรหัสผ่านด้วยตนเองไฟล์ config ก็พังและฉันต้องโคลน repo อีกครั้ง อย่าลอง .. ..
Letie Techera

102

เปิดตัวช่วยข้อมูลประจำตัวเพื่อที่ Git จะบันทึกรหัสผ่านของคุณไว้ในหน่วยความจำชั่วระยะเวลาหนึ่ง:

ใน Terminal ให้ป้อนข้อมูลต่อไปนี้:

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

โดยค่าเริ่มต้น Git จะแคชรหัสผ่านของคุณเป็นเวลา 15 นาที

หากต้องการเปลี่ยนการหมดเวลาแคชรหัสผ่านเริ่มต้นให้ป้อนข้อมูลต่อไปนี้:

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

จากGitHub ช่วยเหลือ


7
คุณเป็นคนเดียวที่แนะนำรุ่นทั่วโลกซึ่งเป็นสิ่งสำคัญทำให้มันถูกทำลายสำหรับฉันทุกครั้งที่ฉันโคลน repo ซ้ำ
Xerus

4
วิธีการตั้งค่าการหมดเวลาเป็นอนันต์? ฉันไม่ต้องการป้อนรหัสผ่านอีกครั้ง
Avamander

8
@Avamander เพียงแทนที่เป็นส่วนหนึ่งกับcache storeดังนั้นคำสั่งทั้งหมดจะเป็น: git config --global credential.helper store. โปรดทราบว่าสิ่งนี้จะเก็บรหัสผ่านของคุณไว้ในไฟล์ open-text (ไม่มีการเข้ารหัสใด ๆ )
Aleksandar

2
@Casper ที่ใช้งานไม่ได้กับบัญชีมากกว่าหนึ่งบัญชีรหัสผ่านไม่ได้มาจากร้านค้าโดยอ้างอิงจากอีเมลอย่างที่ควรจะเป็นแทนที่จะเป็นคนแรกที่อยู่ในรายการ
Avamander

2
@Avamander หืมมม .. มันควรจะเป็นแบบนั้นหรืออาจเป็นข้อผิดพลาด? ค่าสูงสุดสำหรับ--timeoutพารามิเตอร์คืออะไร
Aleksandar

50

คุณสามารถแก้ไข~/.gitconfigไฟล์เพื่อเก็บข้อมูลรับรองของคุณ

sudo nano ~/.gitconfig

ซึ่งควรมีอยู่แล้ว

[user]
        email = your@email.com
        user = gitUSER

คุณควรเพิ่มที่ด้านล่างของไฟล์นี้

[credential]
        helper = store

เหตุผลที่ฉันแนะนำตัวเลือกนี้เป็นสาเหตุที่เป็นสากลและหากคุณต้องการลบตัวเลือกที่คุณรู้ว่าจะไปที่ไหนและเปลี่ยนแปลง

ใช้ตัวเลือกนี้เฉพาะในคอมพิวเตอร์ส่วนบุคคลของคุณ

จากนั้นเมื่อคุณดึง | โคลน | ป้อนรหัสผ่าน git ของคุณโดยทั่วไปรหัสผ่านจะถูกบันทึกใน~/.git-credentialsรูปแบบ

https://GITUSER:GITPASSWORD@DOMAIN.XXX

WHERE DOMAIN.XXX สามารถเป็น GITHUB.COM | BITBUCKET.ORG | อื่น ๆ

ดูเอกสาร

รีสตาร์ทเครื่องของคุณ


1
อย่าลืมรีสตาร์ทหน้าต่าง bash git เมื่อฉันทำอย่างนั้นมันทำงานให้ฉัน
sofs1

33

เพียงใส่ข้อมูลประจำตัวของคุณใน Url เช่นนี้:

https://Username: Password@github.com/myRepoDir/myRepo.git

คุณสามารถจัดเก็บแบบนี้:

git remote add myrepo https://Userna...

ตัวอย่างที่จะใช้ :

git push myrepo master


ตอนนี้คือการแสดงรายชื่อแทน URL:

git remote -v

... และคำสั่งที่จะลบอย่างใดอย่างหนึ่ง:

git remote rm myrepo


8
คุณสามารถปล่อยรหัสผ่านของคุณออกจาก URL เพื่อให้ Git ขอรหัสผ่านของคุณ แต่ไม่ใช่ชื่อผู้ใช้ของคุณ
จิงโจ้

มันง่ายมากและปลอดภัยในการใช้ SSH แทน HTTP ดังนั้นคุณสามารถเก็บรหัสผ่าน Git ของคุณเป็นความลับและใช้ SSH-Key ของคุณเท่านั้น ข้อมูลเกี่ยวกับ SSH บน Git: help.github.com/th/enterprise/2.16/user/… git@github.com:Username/myRepo.git
Loïch

การมีรหัสผ่านใน URL จะบันทึกไว้ในประวัติของเทอร์มินัลของคุณดังนั้นวิธีนี้จึงไม่ปลอดภัยมาก
Josh Correia

โปรดทราบว่าขณะนี้ Wiki สามารถทำการโคลนได้เท่านั้นhttpsไม่ใช่sshวิธีแก้ปัญหาเช่นนี้จึงมีประโยชน์ โปรดทราบว่าคุณสามารถใช้ oauth-token ซึ่งมีความปลอดภัยมากกว่าเล็กน้อยที่รหัสผ่าน GitHub ของคุณ
AstroFloyd

31

สำหรับการตั้งค่าส่วนกลางเปิดเทอร์มินัล (จากที่ใดก็ได้) รันต่อไปนี้:

  git config --global user.name "your username"
  git config --global user.password "your password"

จากนั้น repo คอมไพล์ท้องถิ่นที่คุณมีในเครื่องของคุณจะใช้ข้อมูลนั้น

คุณสามารถกำหนดค่าแต่ละ repo ได้โดยทำดังนี้

  • เปิด terminal ที่โฟลเดอร์ repo
  • เรียกใช้ต่อไปนี้:

    git config user.name "your username"
    git config user.password "your password"
    

มีผลกับโฟลเดอร์นั้นเท่านั้น (เนื่องจากการกำหนดค่าของคุณเป็นแบบโลคัล)


8
เป็นอันตรายหรือไม่หากมีข้อมูลรับรองดังกล่าวในไฟล์กำหนดค่าอย่างง่ายที่ทุกคนสามารถดูได้
bool3max

1
คำถามของคุณควรเป็นหัวข้ออื่น ที่นี่เราจะอธิบายเกี่ยวกับวิธีการตั้งค่าชื่อและรหัสผ่านสำหรับ git global และ local
Tuananhcwrs

ขอบคุณสำหรับเพื่อนเข้า
bool3max

11
ฉันต้องการเพิ่มว่าการถามเกี่ยวกับปัญหาด้านความปลอดภัยที่เป็นไปได้ของคำตอบนั้นมีที่นี่เนื่องจากมีผลโดยตรงต่อคุณภาพและผู้ใช้หลายพันรายที่อาจนำไปใช้
Michael Kargl

2
ไม่ทำงานสำหรับฉันเพิ่ม--localแท็ก แต่ไม่มีอะไรเกิดขึ้นอีก
PayamBeirami

23

คุณสามารถใช้ git-credential-store เพื่อจัดเก็บรหัสผ่านของคุณที่ไม่ได้เข้ารหัสบนดิสก์ได้รับการป้องกันโดยสิทธิ์ของระบบไฟล์เท่านั้น

ตัวอย่าง

$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

[several days later]
$ git push http://example.com/repo.git
[your credentials are used automatically]

คุณสามารถตรวจสอบข้อมูลประจำตัวที่เก็บไว้ในไฟล์ ~/.git-credentials

สำหรับข้อมูลเพิ่มเติมเยี่ยมชม git-credential-store - ผู้ช่วยในการจัดเก็บข้อมูลประจำตัวบนดิสก์


17

คุณจะปลอดภัยมากขึ้นหากคุณใช้การตรวจสอบความถูกต้อง SSH มากกว่าการตรวจสอบชื่อผู้ใช้ / รหัสผ่าน

หากคุณใช้ Mac การตรวจสอบความถูกต้องไคลเอ็นต์ SSH จะรวมอยู่ในพวงกุญแจ MacOS เมื่อคุณสร้างคีย์ SSH แล้วให้พิมพ์เทอร์มินัลของคุณ:

ssh-add -K ~/.ssh/id_rsa

สิ่งนี้จะเพิ่มคีย์ส่วนตัว SSH ให้กับพวงกุญแจ MacOS ลูกค้า git จะใช้ ssh เมื่อมันเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกล ตราบใดที่คุณได้ลงทะเบียนพับลิกคีย์ของคุณกับเซิร์ฟเวอร์คุณก็จะใช้ได้


1
ควรเป็น k ไม่ใช่ K?
dez93_2000

1
FYI: ฉันกำลังทำงานกับ Mac ต้องบอกว่าจากข้อมูล "man": "-k" เมื่อโหลดคีย์เข้าหรือลบคีย์จากเอเจนต์ให้ประมวลผลคีย์ส่วนตัวธรรมดาเท่านั้นและข้ามใบรับรอง "-K" เมื่อเพิ่มตัวตนข้อความรหัสผ่านแต่ละอันจะถูกเก็บไว้ในพวงกุญแจของผู้ใช้ เมื่อลบ identities ด้วย -d แต่ละวลีรหัสผ่านจะถูกลบออก
Birol Efe

3
ฉันไม่คิดว่ามันจะใช้งานได้กับที่เก็บแบบ https
zakmck

5
คำตอบนี้ดูเหมือนจะสร้างความสับสนให้รหัสผ่าน (repos HTTPS) ด้วยคีย์ส่วนตัวของ SSH
Steve Bennett

2
ฉันไม่เห็นด้วย. คุณไม่สามารถจะปลอดภัยมากขึ้นโดยการให้การเข้าถึงไปยังโฮสต์ที่SSHเข้าถึง โดยใช้การตรวจสอบ HTTP GitHub/GitLabคนที่ขโมยข้อมูลประจำตัวจะมีเพียงการเข้าถึง โทเค็นยังได้รับการออกแบบให้มีชีวิตที่ จำกัด
Dimitri Kopriwa

16

หลังจากไปโพสต์บล็อกและอื่น ๆอีกหลายสิบครั้งฉันก็ลองทุกวิธีและนี่คือสิ่งที่ฉันคิดขึ้นมา ครอบคลุมทุกอย่าง

สูตรข้อมูลประจำตัวของ Vanilla DevOps Git & แพคเกจส่วนตัว

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

  • คีย์สาธารณะ SSH
    • SSH_ASKPASS
  • โทเค็นการเข้าถึง API
    • GIT_ASKPASS
    • .gitconfig แทนของ
    • .gitconfig [หนังสือรับรอง]
    • .git-ข้อมูลประจำตัว
    • .netrc
  • แพ็คเกจส่วนตัว (ฟรี)
    • node / npm package.json
    • ข้อกำหนดของ python / pip / eggs.txt
    • อัญมณีพลอยทับทิม
    • golang go.mod

กระสุนเงิน

ต้องการ Just Works ™หรือไม่ นี่คือกระสุนเงินวิเศษ

รับโทเค็นการเข้าถึงของคุณ (ดูหัวข้อใน cheatsheet หากคุณต้องการคำแนะนำ Github หรือ Gitea สำหรับสิ่งนั้น) และตั้งค่าในตัวแปรสภาพแวดล้อม (ทั้งสำหรับ dev ท้องถิ่นและการปรับใช้)

MY_GIT_TOKEN=xxxxxxxxxxxxxxxx

สำหรับ Github ให้คัดลอกและเรียกใช้คำต่อบรรทัดเหล่านี้:

git config --global url."https://api:$MY_GIT_TOKEN@github.com/".insteadOf "https://github.com/"
git config --global url."https://ssh:$MY_GIT_TOKEN@github.com/".insteadOf "ssh://git@github.com/"
git config --global url."https://git:$MY_GIT_TOKEN@github.com/".insteadOf "git@github.com:"

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

ไม่ได้ใช้ Github ใช่ไหม

สำหรับแพลตฟอร์มอื่น ๆ (Gitea, Github, Bitbucket) เพียงแค่เปลี่ยน URL อย่าเปลี่ยนชื่อผู้ใช้ (โดยพลการพวกเขาจำเป็นสำหรับรายการกำหนดค่าที่แตกต่างกัน)

ความเข้ากันได้

สามารถใช้งานได้ใน MacOS, Linux, Windows (ใน Bash), Docker, CircleCI, Heroku, Akkeris เป็นต้น

ข้อมูลเพิ่มเติม

ดูส่วน ".gitconfig แทนที่จะเป็น" ของ cheatsheet

ความปลอดภัย

ดูหัวข้อ "ความปลอดภัย" ของแผ่นงาน


2
นี่คือผู้ช่วยชีวิต ขอบคุณ
annaoomph

2
สิ่งที่ฉันเคยเป็นหลังจากนั้นgit config --global credential."https://somegithost.com".username MyUserNameซึ่งอยู่ใน cheatsheet ของคุณ แต่ไม่ใช่ที่อื่นในชุดคำตอบนี้ ทางออกเฉพาะนั้นไม่ได้ตอบคำถามของ OP แต่มันก็ตอบฉันแล้วขอบคุณ!
TheDudeAbides

1
มันยอดเยี่ยมมาก !!! คำตอบที่ดีที่สุดขอบคุณมาก
Parsa

12

ในกรณีนี้คุณต้องมีผู้ช่วยหนังสือรับรอง git เพื่อบอก git ให้จดจำรหัสผ่านและชื่อผู้ใช้ GitHub ของคุณโดยใช้บรรทัดคำสั่งต่อไปนี้:

git config --global credential.helper wincred 

และหากคุณใช้ repo โดยใช้คีย์ SSH คุณต้องใช้คีย์ SSH เพื่อตรวจสอบสิทธิ์


11

ไม่มีคำตอบข้างต้นสำหรับฉัน ฉันได้รับสิ่งต่อไปนี้ทุกครั้งที่ฉันต้องการfetchหรือpull:

Enter passphrase for key '/Users/myusername/.ssh/id_rsa':


สำหรับ Macs

ฉันสามารถหยุดมันได้โดยขอข้อความรหัสผ่านของฉันโดย:

  1. เปิดการกำหนดค่าโดยเรียกใช้: vi ~/.ssh/config
  2. เพิ่มต่อไปนี้: UseKeychain yes
  3. บันทึกและออก: กดEscแล้วป้อน:wq!

สำหรับ Windows

ฉันสามารถทำให้มันทำงานโดยใช้ข้อมูลใน stackexchange นี้: https://unix.stackexchange.com/a/12201/348665


นั่นเป็นเพราะคุณกำลังใช้โปรโตคอล SSH (คำตอบอื่น ๆ ใช้ HTTPS)
mariusm

6

นอกเหนือจากการแก้ไข~/.gitconfigไฟล์แล้วคุณสามารถทำได้ถ้าถามว่า:

git config --local --edit

หรือ

git config --global --edit

หมายเหตุให้ใช้เครื่องหมายคำพูดเดี่ยวเสมอ:

git config --local user.name 'your username'
git config --local user.password 'your password'

หรือ

git config --global user.name 'your username'
git config --global user.password 'your password'

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

--localหรือ--globalหมายถึงการกำหนดค่าพารามิเตอร์จะถูกบันทึกไว้สำหรับโครงการหรือสำหรับผู้ใช้ระบบปฏิบัติการ


ตรวจสอบยังนี้อย่างใดอย่างหนึ่งที่อธิบายได้มากยิ่งขึ้น
prosti

6

เพียงแค่ใช้

git config --global credential.helper store

และทำการดึง gitมันจะถามชื่อผู้ใช้และรหัสผ่านจากนี้มันจะไม่ให้พรอมต์ชื่อผู้ใช้และรหัสผ่านใด ๆ มันจะเก็บรายละเอียด


4
คุณได้เพียงแค่พื้นซ้ำคำตอบที่ได้รับการยอมรับ
jsamol

4

เก็บชื่อผู้ใช้และรหัสผ่านใน. git-credentials

.git-credentialsคือที่เก็บชื่อผู้ใช้และรหัสผ่านของคุณ (โทเค็นการเข้าถึง) เมื่อคุณเรียกใช้git config --global credential.helper storeซึ่งเป็นคำตอบอื่น ๆ ที่แนะนำแล้วพิมพ์ชื่อผู้ใช้และรหัสผ่านหรือโทเค็นการเข้าถึงของคุณ:

https://${username_or_access_token}:${password_or_access_token}@github.com

ดังนั้นเพื่อบันทึกชื่อผู้ใช้และรหัสผ่าน (เข้าถึงโทเค็น):

git config —-global credential.helper store
echo “https://${username}:${password_or_access_token}@github.com“ > ~/.git-credentials

สิ่งนี้มีประโยชน์มากสำหรับหุ่นยนต์ gitHub เช่นการแก้ปัญหาการสร้างอัตโนมัติของเชนในที่เก็บนักเทียบท่าเดียวกันโดยมีกฎสำหรับสาขาที่แตกต่างกันและจากนั้นเรียกมันโดยการผลักดันมันในpost_pushเชื่องช้าในศูนย์กลางนักเทียบท่า

ตัวอย่างของสิ่งนี้สามารถเห็นได้ที่นี่ใน stackoverflow


ขอบคุณคุณเป็นผู้ช่วยชีวิต! นอกจากนี้เรายังสามารถตั้งค่า https: // $ {access_token}: $ {access_token} @ github.com
Lucas Mendes Mota Da Fonseca

1
@LucasMendesMotaDaFonseca เข้าถึงโทเค็นสามารถใช้เป็นชื่อผู้ใช้ ???
JiaHao Xu


2

หลังจากอ่านกระทู้เต็มและทดสอบคำตอบส่วนใหญ่กับคำถามนี้ในที่สุดฉันก็พบว่าขั้นตอนที่เหมาะกับฉัน ฉันต้องการแบ่งปันในกรณีที่มีคนจัดการกับกรณีการใช้งานที่ซับซ้อน แต่ก็ยังไม่ต้องการผ่านเธรดแบบเต็มและgitcredentials , gitcredentials-storeฯลฯ หน้าคนอย่างที่ฉันทำ

ค้นหาขั้นตอนด้านล่างที่ฉันแนะนำถ้าคุณ (เช่นฉัน) ต้องจัดการกับที่เก็บหลายแห่งจากผู้ให้บริการหลายราย (GitLab, GitHub, Bitbucket ฯลฯ ) โดยใช้ชื่อผู้ใช้ / รหัสผ่านที่แตกต่างกันหลายชุด หากคุณมีบัญชีเดียวที่จะทำงานแทนคุณอาจจะดีกว่าที่จะใช้โซลูชันgit config --global credential.helper storeหรือgit config --global user.name "your username"อื่น ๆ ที่ได้รับการอธิบายอย่างดีในคำตอบก่อนหน้า

ทางออกของฉัน:

  1. ยกเลิกการตั้งค่าผู้ช่วยข้อมูลประจำตัวทั่วโลกในกรณีที่บางการทดลองในอดีตได้รับในทาง :)

> git config --global --unset credentials.helper

  1. ย้ายไปยังไดเรกทอรีรากของ repo ของคุณและปิดการใช้งานผู้ช่วยข้อมูลประจำตัวท้องถิ่น (ถ้าจำเป็น)

> cd /path/to/my/repo

> git config --unset credential.helper

  1. สร้างไฟล์เพื่อเก็บข้อมูลรับรองของ repo ของคุณ

> git config credential.helper 'store --file ~/.git_repo_credentials'

หมายเหตุ : คำสั่งนี้จะสร้างไฟล์ใหม่ชื่อ ".git_repo_credentials" ในไดเรกทอรีหลักของคุณซึ่ง Git เก็บข้อมูลรับรองของคุณไว้ หากคุณไม่ระบุชื่อไฟล์ Git จะใช้ ".git_credentials" เริ่มต้น ในกรณีนี้เพียงแค่ออกคำสั่งต่อไปนี้จะทำ:

> git config credential.helper store

  1. ตั้งชื่อผู้ใช้ของคุณ

git config credential.*.username my_user_name

หมายเหตุ : การใช้ "*" โดยปกติจะเป็นไรถ้าที่เก็บของคุณมาจากผู้ให้บริการรายเดียวกัน (เช่น GitLab) หากที่เก็บของคุณโฮสต์โดยผู้ให้บริการที่แตกต่างกันดังนั้นฉันขอแนะนำให้ตั้งลิงก์ไปยังผู้ให้บริการสำหรับทุก ๆ ที่เก็บข้อมูลอย่างชัดเจนเช่นในตัวอย่างต่อไปนี้ (สำหรับ GitLab):

git config credential.https://gitlab.com.username my_user_name

ณ จุดนี้หากคุณออกคำสั่งที่ต้องการข้อมูลประจำตัวของคุณ (เช่นgit pull) คุณจะถูกถามรหัสผ่านที่สอดคล้องกับ "my_user_name" จำเป็นต้องดำเนินการนี้เพียงครั้งเดียวเนื่องจาก git เก็บข้อมูลรับรองไว้ที่ ".git_repo_credentials" และจะใช้ข้อมูลเดียวกันโดยอัตโนมัติในการเข้าถึงครั้งต่อไป


2

จากความคิดเห็นโดย rifrol, บน Linux Ubuntu, จากคำตอบนี้, นี่เป็นวิธีใน Ubuntu:

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

ดิสทรือื่น ๆ ให้ไบนารีดังนั้นคุณไม่ต้องสร้างมัน

โดยปกติแล้วใน OS X จะมี "built" พร้อมกับโมดูลเริ่มต้นของ "osxkeychain" ดังนั้นคุณจะได้รับฟรี


2

ตรวจสอบเอกสารทางคอมไพล์อย่างเป็นทางการ:

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

โชคดีที่ Git มีระบบข้อมูลรับรองที่สามารถช่วยเหลือคุณได้ Git มีตัวเลือกให้ในกล่อง:

  • ค่าเริ่มต้นคือไม่แคชเลย ทุกการเชื่อมต่อจะแจ้งให้คุณใส่ชื่อผู้ใช้และรหัสผ่าน

  • โหมด“ แคช” เก็บข้อมูลประจำตัวในหน่วยความจำในช่วงระยะเวลาหนึ่ง ไม่มีรหัสผ่านใด ๆ ที่เก็บไว้ในดิสก์และจะถูกลบออกจากแคชหลังจาก 15 นาที

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

  • หากคุณใช้ Mac Git จะมาพร้อมกับโหมด“ osxkeychain” ซึ่งจะเก็บข้อมูลรับรองไว้ในพวงกุญแจที่ปลอดภัยซึ่งเชื่อมต่อกับบัญชีระบบของคุณ วิธีการนี้จัดเก็บข้อมูลรับรองไว้ในดิสก์และไม่หมดอายุ แต่จะถูกเข้ารหัสด้วยระบบเดียวกับที่จัดเก็บใบรับรอง HTTPS และเติมอัตโนมัติ Safari

  • หากคุณใช้ Windows คุณสามารถติดตั้งผู้ช่วยที่เรียกว่า "Git Credential Manager สำหรับ Windows" สิ่งนี้คล้ายกับตัวช่วย“ osxkeychain” ที่อธิบายไว้ข้างต้น แต่ใช้ Windows Credential Store เพื่อควบคุมข้อมูลที่ละเอียดอ่อน มันสามารถพบได้ที่ https://github.com/Microsoft/Git-Credential-Manager-for-Windows

คุณสามารถเลือกหนึ่งในวิธีเหล่านี้โดยการตั้งค่าการกำหนดค่า Git:

$ git config --global credential.helper cache

$ git config --global credential.helper store

https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage

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