วิธีที่ดีที่สุดในการจัดเก็บรหัสผ่าน svn ที่เข้ารหัสไว้บน Ubuntu Server คืออะไร


8

Hullo,

ฉันมี Ubuntu Server ที่ใช้เซิร์ฟเวอร์ subversion ฉันกำลังเรียกใช้ไคลเอนต์บนเครื่องเดียวกันผ่าน SSH และฉันต้องการให้ลูกค้า svn จดจำรหัสผ่านของฉัน แต่ไม่เก็บไว้เป็นข้อความธรรมดา ดูที่นี่ฉันเห็นสองวิธี: gnome-keyring และ kwallet เนื่องจากฉันไม่ได้ใช้ตัวจัดการเดสก์ท็อปฉันค่อนข้างจะกังวลเกี่ยวกับการพยายามใช้สิ่งเหล่านี้ ข้อเสนอแนะใด ๆ มันจะโอเค (หรือแม้กระทั่งทำงาน) เพื่อใช้หนึ่งในสองแอพที่ฉันพูดถึง?

TIA

คำตอบ:


9
  1. คุณสามารถเรียกใช้ Gnome-keyring หรือ Kwallet บนเครื่องระยะไกล แต่ละตัวมีสององค์ประกอบคือ daemon และ GUI

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

    • คุณสามารถควบคุม Kwallet ในบรรทัดคำสั่งผ่านqdbusได้แม้ว่าจะไม่ใช่ความคิดที่ดีในกรณีเฉพาะนี้เพราะคุณต้องเขียนรหัสผ่านของคุณใน cleartext บนบรรทัดคำสั่งและผู้ใช้รายอื่นสามารถสอดแนมได้ ดูเพิ่มเติมนี้คำตอบ SU

    • หลามมีผลผูกพันกับทั้ง Gnome-keyring และ Kwallet (แพ็คเกจpython-keyring-gnomeและpython-keyring-kwallet); คุณสามารถเขียนสคริปต์หลามเล็ก ๆ เพื่อควบคุมมันได้ ในความเป็นจริงมีอยู่แล้วหนึ่งสำหรับ Gnome-พวงกุญแจ: gkeyring

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

  2. หากคุณใช้ Gnome-keyring หรือ Kwallet ในพื้นที่คุณสามารถส่งต่อพวกเขาผ่าน ssh ด้วยการทำงานเล็กน้อย พวกเขาใช้ซ็อกเก็ต Unix ซึ่ง ssh ไม่สามารถส่งต่อ แต่คุณสามารถใช้socatรีเลย์ Unix sockets ไปยัง TCP sockets ในเครื่องและในทางกลับกันบนเครื่องระยะไกล:

    while true; do socat TCP-LISTEN:22007 UNIX-CONNECT:"$GNOME_KEYRING_SOCKET"; done &
    ssh -R22007:localhost:22007 remote.example.com
    export GNOME_KEYRING_SOCKET="$HOME/.gnome-keyring-socket"
    while true; do socat UNIX-LISTEN:"$GNOME_KEYRING_SOCKET" TCP4:localhost:22007; done &
    

    นี้ได้โดยอัตโนมัติด้วยสคริปต์เปลือกขนาดเล็กในแต่ละด้านและสายในRemoteForward ~/.ssh/configในทางทฤษฎีแล้วคุณควรจะสามารถเข้าถึงพวงกุญแจ gnome จากเครื่องระยะไกลได้ อย่างไรก็ตามฉันพยายามเข้าถึงด้วยม้าน้ำและมันก็ไม่ได้พยายามเชื่อมต่อ$GNOME_KEYRING_SOCKETด้วย ฉันไม่รู้ว่าทำไมและฉันไม่รู้ว่า svn จะสามารถเข้าถึงพวงกุญแจได้หรือไม่

  3. คุณสามารถเก็บรหัสผ่าน svn ของคุณในระบบไฟล์ที่เข้ารหัส มีหลายตัวเลือก ; encfsผมคิดว่าวิธีที่ง่ายที่สุดที่จะได้รับจะเป็น ตั้งค่าเริ่มต้น:

    sudo aptitude install encfs
    encfs ~/.passwords.encrypted ~/.passwords
    mv ~/.subversion/auth ~/.passwords/svn-auth
    ln -s ../.passwords/svn-auth ~/.subversion/auth
    

    เวิร์กโฟลว์ปกติ:

    encfs ~/.passwords.encrypted ~/.passwords
    ... work ...
    fusermount -u ~/.passwords
    

    วิธีนี้มีการตั้งค่าของฉันด้วยเหตุผลหลายประการ:

    • ทั้งการตั้งค่าเริ่มต้นและเวิร์กโฟลว์ปกตินั้นง่ายมาก
    • ไม่สำคัญว่าคุณจะลงชื่อเข้าใช้จากที่ใดโดยเฉพาะคุณไม่จำเป็นต้องมีเซิร์ฟเวอร์ X ในเครื่องและใช้การส่งต่อ X ผ่าน ssh
    • ระบบไฟล์ที่เข้ารหัสนั้นมีความหลากหลายมากกว่าพวงกุญแจ (แม้ว่าจะสะดวกกว่าสำหรับการใช้พวงกุญแจ แต่ในกรณี svn ที่ไม่สำคัญ)
    • เครื่องมือที่ไม่ใช้กันอย่างแพร่หลายเพียงอย่างเดียวที่คุณต้องการคือ encfs (ซึ่งต้องใช้ FUSE) และเป็นชุดสำหรับ Ubuntu

มากกว่าที่ฉันจะคาดหวังได้ในคำตอบขอบคุณ! ฉันจะลองวิธีที่ 3 แล้วรายงานกลับ
Andy

คำตอบที่สมบูรณ์มาก
this.josh

เป็นไปได้ไหมที่จะทำการโค่นล้มการประกันตัวถ้า ~ /. subversion / auth ว่างเปล่า / ไม่มีอยู่? มิฉะนั้นวิธีที่ 3 จะค่อนข้างอันตรายหากคุณลืมรันการเข้ารหัสก่อน
unhammer

@unhammer ด้วยวิธีการนี้หากระบบไฟล์ encfs ไม่ได้ถูกเมาท์~/.subversion/authนั่นคือลิงก์สัญลักษณ์ห้อยต่องแต่ง ในกรณีที่การโค่นล้มบอกคุณว่ามันกำลังจะจัดเก็บรหัสผ่านของคุณ (ถ้าคุณยังไม่ได้ปิดการแจ้งเตือนนั้น) แต่ไม่ได้เก็บไว้ที่ใดก็ได้ในความเป็นจริง (ทดสอบด้วย svn 1.6.6) ดังนั้นจึงไม่มีความเสี่ยงด้วยวิธีที่สาม
Gilles 'หยุดความชั่วร้าย'

aha ฉันลองครั้งแรกโดยไม่ต้องใช้ symlink แต่ตอนนี้ฉันเห็น symlink ไปยังโฟลเดอร์ที่อยู่ในโฟลเดอร์ที่เข้ารหัสแล้วใช้งานได้ขอบคุณสำหรับการล้างข้อมูลนั้น :-)
unhammer

0

gpg เข้ารหัสไฟล์ด้วยรหัสผ่านใน - แต่คุณจะต้องใส่ข้อความรหัสผ่าน (และอย่าทำรหัสส่วนตัวหาย!

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

ทำไมคุณต้องทำเช่นนี้?


ฉันไม่ได้กำลังมองหาวิธีการเข้ารหัสที่มีวัตถุประสงค์ทั่วไป แต่เป็นวิธีที่ใช้กับ SVN ได้อย่างดี เมื่อฉันใช้ SVN บน Ubuntu dekstop ไม่มีปัญหาฉันเลยคิดว่ามันใช้ gnome-keyring ฉันเข้าใจอีกครั้งว่า gnome-keyring ไม่ได้ติดตั้งบนเซิร์ฟเวอร์ Ubuntu และนั่นเป็นสาเหตุที่ทำให้เกิดปัญหา ขณะนี้ฉันสามารถเช็คอินได้ แต่ฉันได้รับคำเตือนว่าฉันสามารถจัดเก็บรหัสผ่านที่ไม่ได้เข้ารหัสเท่านั้น ดูลิงก์ที่ฉันให้รายละเอียดเพิ่มเติม ขอบคุณ
Andy

ฉันได้อธิบายคำอธิบายข้างต้นเรียบร้อยแล้ว
Andy

ฉันชอบที่จะใช้ ~ / .authinfo.gpg ด้วยรูปแบบ netrc มาตรฐานสำหรับ SVN และให้ gpg จัดการกับการเข้ารหัส แต่น่าเสียดายที่ดูเหมือนว่ามันต้องการการติดตั้งมากกว่าโซลูชัน encfs เล็กน้อย ดูเหมือนว่า svn จะอนุญาตให้เก็บรหัสผ่านที่ผู้ใช้กำหนดเองโดยพลการ
unhammer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.