วิธีบันทึกรหัสผ่านเมื่อใช้ Subversion จากคอนโซล


106

ฉันสงสัยว่ามีวิธีบันทึกรหัสผ่านการโค่นล้มของฉันเมื่อsvnดำเนินการจากคอนโซลหรือไม่ คอนโซลเป็นตัวเลือกเดียวที่ฉันมี เมื่อฉันพยายามทำการโค่นล้มใด ๆ เช่นระบบsvn commitจะแจ้งให้ป้อนรหัสผ่านบัญชีทุกครั้ง มีวิธีบันทึกรหัสผ่านนี้เพื่อที่ฉันจะได้ไม่ต้องพิมพ์ซ้ำทุกครั้งหรือไม่?


โปรดดูที่ไม่สามารถสร้างรหัสผ่าน svn store ได้แม้ว่าการกำหนดค่าจะถูกตั้งค่าให้อนุญาตสำหรับการแก้ไขปัญหาในกรณีที่คำตอบที่ยอมรับไม่ทำงาน
maxschlepzig

คำตอบ:


110

ในคุณอาจมี~/.subversion/config store-passwords = noเปลี่ยนเป็นyes(หรือเพียงแค่แสดงความคิดเห็นเนื่องจากค่าเริ่มต้นเป็นใช่) และในครั้งต่อไปที่คุณให้การโค่นล้มรหัสผ่านควรบันทึกไว้

คุณอาจต้องการตรวจสอบให้แน่ใจว่าเจ้าของและสิทธิ์ของ~/.subversion/configถูกต้อง (ไม่มีการเข้าถึงแบบสาธารณะหรือแบบกลุ่ม 600)


Red Hat Linux 2.6.18ฉันไม่สามารถหาไฟล์นี้ใน ความคิดที่เป็นไปได้?
Ish

3
@Ish คุณอาจต้องทำให้ได้ถ้ายังไม่มี ฉันคิดว่า SVN ดูที่นั่นในทุกพื้นที่
Michael Mrozek

5
+1 หลังจากสร้าง/etc/subversion/configงานระบบไฟล์ตามที่คาดไว้ ขอบคุณ
อิช

@IshKumar ขอบคุณ! ทำงานให้ฉันครั้งแรก!
Anil

15
@ เซเว่นดีกว่าแค่เขียนคำตอบใหม่ที่ทันสมัยกว่า ( store-passwordsตัวเลือกในconfigตอนนี้เลิกใช้แล้วตามความคิดเห็นเริ่มต้นบางอย่างที่ฉันพบในconfigไฟล์ของฉันมันถูกแทนที่ด้วยตัวเลือกเดียวกันในservers)
Kyle Strand

54

ขึ้นอยู่กับโปรโตคอลที่คุณใช้ หากคุณใช้ SVN + SSH ไคลเอนต์ SVN จะไม่สามารถบันทึกรหัสผ่านของคุณได้เนื่องจากไม่เคยแตะต้อง - ไคลเอนต์ SSH จะแจ้งให้คุณทราบโดยตรง ในกรณีนี้คุณสามารถใช้คีย์ SSH และ ssh-agent เพื่อหลีกเลี่ยงพรอมต์คงที่ หากคุณใช้โปรโตคอล svnserve หรือ HTTP (S) แสดงว่าไคลเอนต์ SSH กำลังจัดการรหัสผ่านของคุณและสามารถบันทึกได้


4
+1 ฉันมีปัญหานี้ - svn + ssh มักจะถามรหัสผ่านเสมอ นอกเหนือจากการแชร์คีย์สาธารณะมีวิธีหลีกเลี่ยงสิ่งนี้หรือไม่ ฉันได้ลอง ssh-agent แล้ว แต่โชคไม่ดี
Michael Mikowski

@MichaelMikowski ดูเหมือนว่ารหัสผ่าน SSH ไม่สามารถบันทึกเพื่อกำหนดค่าสำหรับการเข้าสู่ระบบอัตโนมัติ คุณสามารถสร้างคู่คีย์ใหม่สำหรับมันจัดเก็บตำแหน่งของคีย์ส่วนตัว.ssh/configต่อท้ายคีย์สาธารณะกับเซิร์ฟเวอร์ SVN
lk_vc

33

ลองล้าง.subversionโฟลเดอร์ของคุณในโฮมไดเร็กทอรีแล้วลองคอมมิตอีกครั้ง ควรแจ้งให้คุณใส่รหัสผ่านจากนั้นถามคุณว่าคุณต้องการบันทึกรหัสผ่านหรือไม่


คุณหมายถึงโฟลเดอร์. subversion แทน!
khmarbaise

3
ผมมีปัญหาเหมือนกัน. ฉันไม่ได้ตั้งค่าการตั้งค่ารหัสผ่านร้านค้าเป็น "ไม่" ในไฟล์ config หรือเซิร์ฟเวอร์ของฉัน แต่ก็ใช้ได้ผล
Bob B

1
ฉันพยายามเปลี่ยนการตั้งค่าทุกประเภท แต่ก็ไม่มีประโยชน์ สิ่งเดียวที่แก้ไขปัญหานี้ได้ในที่สุดคือการลบโฟลเดอร์. subversion
Michael Noyb

สิ่งนี้ได้ผลสำหรับฉันเช่นกัน ที่น่าสนใจคือมันเก็บรหัสผ่านไว้ในโฟลเดอร์ ~ / .subversion / auth / svn.simple สำหรับฉัน
Chetan

สิ่งนี้ทำเพื่อฉันเช่นกัน แต่ฉันดูเพื่อดูว่าความแตกต่างคืออะไร - และมันกลายเป็นความเป็นเจ้าของไดเร็กทอรี. subversion และไฟล์ในนั้น หลังจากถ่ายโอนข้อมูลจากเครื่องอื่นไดเร็กทอรีนี้ก็กลายเป็นของรูทเมื่อมันควรจะเป็นของฉัน การลบไดเร็กทอรีและปล่อยให้ svn สร้างขึ้นใหม่ช่วยแก้ปัญหาได้ (แต่ chown อาจจะแก้ไขได้เช่นกัน)
Joe Strout

19

~/.subversion/serversผมต้องแก้ไข ฉันตั้งค่าstore-plaintext-passwords = yes(ไม่เคยมีมาก่อน) นั่นเป็นเคล็ดลับ แม้ว่าอาจจะถือว่าไม่ปลอดภัย


3
ในไฟล์เดียวกันฉันต้องตั้งค่าstore-passwords = yes. ฉันเชื่อว่ามันถูกตั้งค่ามาก่อน แต่ไม่ได้รับการตั้งค่าเมื่อฉันอัปเดตเป็น SVN 1.7
pieman72

9

โปรดสังเกตย่อหน้าต่อไปนี้จาก~/.subversion/serversไฟล์:

สามารถระบุทั้ง 'store-passwords' และ 'store-auth-creds' ในไฟล์ 'servers' ในไดเร็กทอรี config ของคุณ สิ่งที่ระบุในส่วนนี้จะถูกแทนที่ด้วยการตั้งค่าที่ระบุในไฟล์ "เซิร์ฟเวอร์"

เป็นอย่างน้อยสำหรับ SVN เวอร์ชัน 1.6.12 ดังนั้น~/.subversion/configอย่าลืมแก้ไขไฟล์เซิร์ฟเวอร์ด้วยเมื่อมันถูกลบล้าง


ซึ่งช่วยให้เห็นว่ามีการลบล้างไฟล์เดียวกัน (การประกาศ "ที่เก็บรหัสผ่าน" สองรายการ!) แก้ไขสิ่งนั้นและไฟล์ svn.simple ถูกสร้างด้วยคุณสมบัติ gnome-keyring
Danielson Alves Júnior

5

หากคุณใช้svn + sshคุณสามารถคัดลอกคีย์ ssh สาธารณะของคุณไปยังเครื่องระยะไกลได้:

ssh-copy-id user@remotehost

5

สำหรับฉัน (ผู้ใช้ Mac) ปัญหาคือพวงกุญแจมีรายการที่เก็บไว้สำหรับข้อมูลรับรองของฉันอยู่แล้ว แต่สิทธิ์การเข้าถึงไม่ถูกต้อง

การลบรายการในแอปพวงกุญแจแล้วสร้างใหม่โดยใช้ svn ช่วยแก้ปัญหาได้


4

ไม่มีคำตอบที่ยอดเยี่ยมเหล่านี้สำหรับฉันในการติดตั้ง Ubuntu ใหม่ แต่เบาะแสจากคำตอบนี้เป็นเคล็ดลับสำหรับฉัน

ฉันต้องอนุญาตให้เก็บรหัสผ่าน "แบบธรรมดา" โดยตั้งค่านี้ว่างใน~/.subversion/config:

password-stores =

ไม่มีการตั้งค่าที่มีอยู่ดังนั้นการว่างจึงมีความสำคัญ

สิ่งนี้นอกเหนือไปจาก:

store-passwords = yes

ใน~/.subversion/servers.


สิ่งนี้ช่วยฉันด้วยเช่นกันเพราะดูเหมือนว่าตัวเลือกเริ่มต้นควรใช้งานได้ แต่เว้นแต่จะระบุไว้อย่างชัดเจนก็ไม่ได้ :(
Arunas Bartisius

3

การใช้ข้อความธรรมดาอาจไม่ใช่ทางเลือกที่ดีที่สุดหากเคยใช้รหัสผ่านเป็นอย่างอื่น

ฉันสนับสนุนคำตอบที่ได้รับการยอมรับ แต่ไม่ได้ผลสำหรับฉัน - ด้วยเหตุผลที่เฉพาะเจาะจงมาก: ฉันต้องการใช้อย่างใดอย่างหนึ่งkwalletหรือที่gnome-keyringเก็บรหัสผ่าน ฉันลองเปลี่ยนการตั้งค่าทั้งหมดสี่ไฟล์:

/etc/subversion/config
/etc/subversion/servers
~/.subversion/config
~/.subversion/servers

แม้ว่าทุกอย่างจะถูกตั้งค่าเหมือนกัน แต่ด้วยpassword-storesและชื่อ KWallet (ค่าเริ่มต้นอาจผิดใช่ไหม) ก็ไม่ได้ผลและยังคงขอรหัสผ่านตลอดไป ไฟล์ใน~/.subversionมีสิทธิ์ 600

ณ จุดนั้นคุณอาจลองตรวจสอบสิ่งง่ายๆอย่างหนึ่ง:

which svn

ถ้าคุณได้รับ:

/usr/bin/local/svn

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

การโค่นล้มเป็นสัตว์ร้ายที่รวบรวมได้ง่ายมากที่จะสร้างโดยบังเอิญโดยไม่ต้องรองรับ HTTP หรือ - ดังในตัวอย่างของฉัน - โดยไม่รองรับที่เก็บรหัสผ่านที่เข้ารหัส (คุณต้องใช้ไฟล์การพัฒนา Gnome หรือ KDE และอีกมากมาย!) แต่./configureสคริปต์จะไม่บอกคุณและคุณได้svnรับคำสั่งที่ใช้งานได้น้อยกว่า

/usr/bin/svnในกรณีที่คุณอาจกลับไปยังลูกค้าซึ่งมาพร้อมกับการกระจายของคุณมักจะอยู่ใน ข้อเสียคือคุณอาจต้องเช็คเอาต์สำเนาที่ใช้งานได้อีกครั้งเนื่องจากไม่มีsvn downgradeคำสั่ง คุณสามารถปรึกษาLinus Torvaldsเกี่ยวกับสิ่งที่คิดเกี่ยวกับการโค่นล้มได้;)


2

หากต้องการเพิ่มคำตอบของ Heath: ดูเหมือนว่า Subversion 1.6 จะปิดใช้งานการจัดเก็บรหัสผ่านโดยค่าเริ่มต้นหากไม่สามารถจัดเก็บไว้ในรูปแบบที่เข้ารหัสได้ คุณสามารถอนุญาตให้จัดเก็บรหัสผ่านที่ไม่ได้เข้ารหัสโดยการตั้งค่าอย่างชัดเจนpassword-stores =(นั่นคือเป็นค่าว่างเปล่า) ~/.subversion/configใน

~/.subversion/auth/svn.simpleในการตรวจสอบการจัดเก็บรหัสผ่านโค่นล้มการใช้งานในลักษณะ ซึ่งประกอบด้วยไฟล์หลายไฟล์แต่ละตารางแฮชมีการเข้ารหัสคีย์ / ค่าอย่างง่าย svn:realmstringในแต่ละระบุไฟล์ซึ่งดินแดนไฟล์ที่เป็น หากไฟล์มี

K 8
passtype
V 6
simple

จากนั้นจะจัดเก็บรหัสผ่านเป็นข้อความธรรมดาที่ใดที่หนึ่งในไฟล์นั้นในK 8 passwordรายการ password-storesอื่นก็พยายามที่จะใช้อย่างใดอย่างหนึ่งของการกำหนดค่า


1

วิธีการทั้งหมดที่กล่าวถึงที่นี่ไม่ได้ผลสำหรับฉัน ฉันสร้างการโค่นล้มจากแหล่งที่มาและฉันพบว่าฉันต้องเรียกใช้การกำหนดค่าด้วย--enable-plaintext-password-storageเพื่อรองรับคุณสมบัตินี้


1

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

svn --version
svn, version 1.9.7 (r1800392)
...
WARNING: Plaintext password storage is enabled!
...

The following authentication credential caches are available:

* Plaintext cache in /gr/home/ffvdqb/.subversion
* GPG-Agent

เทียบกับ:

svn --version
svn, version 1.12.2 (r1863366)
...

The following authentication credential caches are available:

* Gnome Keyring
* GPG-Agent
* KWallet (KDE)

เมื่อคุณเห็นว่าเวอร์ชันของ svn ของคุณเปิดใช้งานสำหรับการจัดเก็บรหัสผ่านข้อความธรรมดาแล้วให้ใช้คำตอบที่เหลือทั้งหมดที่นี่


1

ฉันใช้ไคลเอนต์TortoiseSVNบน Windows และสำหรับฉันการตั้งค่าพารามิเตอร์ store-passwords เป็นใช่ใน%USERPROFILE%\AppData\Roaming\Subversion\configไม่ได้ช่วยในการจัดเก็บรหัสผ่าน

บันทึกรหัสผ่านสำเร็จหลังจากลบโฟลเดอร์นี้ (ในกรณีที่เปลี่ยนชื่อ):

%USERPROFILE%\AppData\Roaming\Subversion\auth

สิ่งแวดล้อม:

Windows 7, TortoiseSVN 1.7.11 (Build 23600 - 64 bit, 2012-12-12T19:08:52), Subversion 1.7.8.

0

น่าเสียดายที่คำตอบไม่สามารถแก้ปัญหาการขอรหัสผ่านสำหรับ ssh + svn ด้วยคีย์ส่วนตัวที่มีการป้องกัน หลังจากการวิจัยพบว่า:

ssh-add

ยูทิลิตี้หากคุณมีคอมพิวเตอร์ Linux ตรวจสอบให้แน่ใจว่าคุณมีคีย์ของคุณเก็บไว้/home/username/.ssh/และพิมพ์คำสั่งนี้บน Terminal

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