ใช้ gnome-keyring-daemon โดยไม่ต้อง X


24

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

คำตอบ:


10

คุณสามารถใช้ได้ pam_gnome_keyring.so เพื่อเริ่มและปลดล็อคภูต GDM ทำสิ่งนี้แล้ว สำหรับ loginคุณต้องกำหนดค่าด้วยตนเอง

เพิ่มบรรทัดเหล่านี้ไปที่ /etc/pam.d/login:

auth     optional  pam_gnome_keyring.so
session  optional  pam_gnome_keyring.so auto_start

หากคุณเข้าสู่ระบบโดยไม่มีรหัสผ่าน (SSH ด้วย Kerberos หรือกุญแจสาธารณะ) สิ่งนี้ อาจ ทำงาน: (ฉันยังไม่ได้ทดสอบ)

echo -n "mypassword" | gnome-keyring-daemon --login

(คุณยังต้องใช้ดีมอนเพื่อให้ทำงาน - เริ่มจาก PAM หรือด้วย --daemonize.)


กรณีที่สองเป็นกรณีในกรณีของฉัน นั่น (ไม่มีเอกสาร?) --login ตัวเลือกนั้นค่อนข้างมีประโยชน์แม้ว่าฉันจะไม่ต้องการเก็บรหัสผ่านที่ไม่ได้แฮชไว้ในสคริปต์หรือวางไว้ในบรรทัดคำสั่ง การอ่านในโหมด unechoed จากภายในสคริปต์ (ไม่ใช่ภาษาเชลล์) ที่ส่งผ่านอินพุตนั้นไปยัง spawned daemon อาจเป็นวิธีที่ดีในการทำเช่นนี้ ฉันควรจะต้องเริ่มกระบวนการนี้เพียงครั้งเดียวต่อการบู๊ตดังนั้นจึงเหมาะสมที่จะพิมพ์รหัสผ่าน ฉันแค่ต้องสามารถทำมันที่บรรทัดคำสั่งแทนผ่านทางกล่องโต้ตอบ GTK
intuited

1
เอ่อ .. ไม่เป็นไรมันเป็นเอกสารโดย gnome-keyring-daemon --help. ฉันเพิ่งตรวจสอบ manpage และ / usr / share / doc
intuited

2
@intuited: เอาล่ะทำแบบนี้: read -rsp "Password: " pass; echo -n "$pass" | gnome-keyring-daemon --login ในสคริปต์
grawity

ใช่แล้วจริง ๆ แล้วจะได้ผล ฉันลืมไปว่าเสียงก้องนั้นเป็นแบบในตัว
intuited

ในการตอบกลับความคิดเห็นเก่าจาก @intuited: gnome-keyring-daemon --help ให้ภาพรวมที่ดีแก่ฉัน แต่ man gnome-keyring-daemon เพียงแค่มีคำอธิบายสั้น ๆ เกี่ยวกับโปรแกรม แต่ไม่มีข้อโต้แย้ง
feeela

9

สรุป

งานที่จำเป็นของการติดตั้ง svn ด้วยการสนับสนุน keyring และการติดตั้ง แอปพลิเคชัน Collabnet keyring_tool ได้รับการดำเนินการแล้วสำหรับเซิร์ฟเวอร์ Linux ของเรา

1) กำหนดค่าไคลเอนต์ SVN เพื่อใช้พวงกุญแจ:

1.1) แก้ไข ~ / .subversion / config

[auth]
password-stores = gnome-keyring

1.2) แก้ไข ~ / .subversion / เซิร์ฟเวอร์

[global]
store-passwords = yes
store-plaintext-passwords = no

2) สร้างพวงกุญแจสำหรับรหัสผ่านของคุณ คุณจะได้รับแจ้งให้สร้างรหัสผ่านใหม่เพื่อปลดล็อคพวงกุญแจ นี่อาจเป็นสิ่งที่คุณต้องการ:

keyring_tool --create=svn

3) ตั้งค่าพวงกุญแจใหม่เป็นค่าเริ่มต้น:

keyring_tool --setdef=svn

4) ใน. bash_profile หรือ. bash_login (สมมติว่าคุณใช้ bash เป็นเทอร์มินัลของคุณ)

    if [ -e /usr/bin/gnome-keyring-daemon ]; then
      if [ ! -z "`kill -0 $GNOME_KEYRING_PID 2>&1`" ]; then
        # Create dbus transport link for SVN to talk to the keyring.
        eval `dbus-launch --sh-syntax`

        # Start the keyring daemon.
        # The use of export here captures the GNOME_KEYRING_PID, GNOME_KEYRING_SOCK
        # env values echoed out at startup.
        export `/usr/bin/gnome-keyring-daemon`
      fi
    fi

5) ใน. bash_logout

    # Kill the message bus established for SVN / Keyring communication
    if [ ! -z "`kill -0 $DBUS_SESSION_BUS_PID 2>&1`" ]; then
      kill $DBUS_SESSION_BUS_PID > /dev/null 2>&1
    fi

    # Kill the Gnome Keyring Daemon prior to logout.
    if [ ! -z "`kill -0 $GNOME_KEYRING_PID 2>&1`" ]; then
      kill $GNOME_KEYRING_PID > /dev/null 2>&1
    fi

พื้นหลัง

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

งานประจำวันของเราส่วนใหญ่ทำผ่าน ssh tunnels ไปยังเซิร์ฟเวอร์ RedHat โดยไม่มีการรองรับ X ดังนั้นฉันต้องหาวิธีรอบ ๆ การรองรับ X11 หลังจากการค้นหาบางอย่างฉันก็สามารถหาทางรอบ ๆ ได้ที่นี่:

วัสดุที่มา

http://support.wandisco.com/index.php?/Knowledgebase/Article/View/362/17/how-to-setup-encrypted-svn-password-storage-using-gnome-keyring-in-an-ssh -session

กุญแจพวกนี้คือการใช้ Collabnet keyring_tool เพื่อสร้าง keyring โดยไม่มีไคลเอ็นต์ gnome-keyring-manager และสร้าง dbus-launch ด้วยตัวคุณเองแทนที่จะปล่อยให้ SVN จัดการการตั้งค่า SVN ใช้ DBUS เพื่อเชื่อมต่อกับ gnome-keyring-daemon และส่งผลต่อการตรวจสอบสิทธิ์โดยรวม ด้วยการเริ่มต้นและทำลายเซสชัน dbus ด้วยตนเองด้วย -sh-syntax คุณหลีกเลี่ยงการพยายามเชื่อมต่อกับ X client เมื่อเริ่มต้น dbus หากคุณเพิ่งเริ่ม gnome-keyring-daemon และพยายามที่จะใช้ SVN มันจะยังคงพร้อมท์ให้คุณใส่รหัสผ่าน keyring แต่จากนั้นจะแจ้งให้คุณทราบถึงข้อมูลประจำตัว SVN ของคุณเช่นกัน dbus จะล้มเหลวเมื่อ SVN พยายามเริ่มต้นเนื่องจากไม่มีไคลเอ็นต์ X ดูเหมือนว่า SVN จะไม่ใช้แฟล็กพิเศษใด ๆ เมื่อเริ่ม dbus


ขอบคุณมากสำหรับสิ่งนี้ได้ดึงผมออกไปแล้วพยายามกำจัดข้อผิดพลาด "วิกฤต **: ข้อผิดพลาดในการสื่อสารกับ gnome-keyring-daemon" ข้อผิดพลาดบน git pull การเปลี่ยนแปลงของคุณเป็น ~ / .profile และ ~ / .bash_logout ได้รับการแก้ไขว่า ... ยังไม่ได้บันทึกรหัสผ่าน แต่ฉันเข้าใกล้ขั้นตอนเดียว! (Ubuntu 16.04.1 LTS)
Chris B

1

อันดับแรกสิ่งที่คุณต้องการทำจริงๆคือการใช้ Ubuntu One อย่างเคร่งครัดจาก command-line ลองดูที่ คำถามที่พบบ่อย Ubuntu หนึ่ง . คำถามที่พบบ่อยพูดว่า ปัจจุบันยังไม่สามารถทำได้ แต่มีเครื่องมือบางอย่างของ CLI u1sdtool และ u1sync . นอกจากนี้ยังมี ชุดคำถามที่พบบ่อย บน Ubuntu One ที่ Launchpad; เนื้อหาอาจเหมือนกับลิงค์ wiki.ubuntu.com ก่อนหน้า

เกี่ยวกับคำถามที่แท้จริงของคุณเกี่ยวกับ gnome-พวงกุญแจ-ภูต , คำถามที่พบบ่อยแนะนำ (1) การตั้งค่าการล็อกอินอัตโนมัติและ (2) การซิงโครไนซ์รหัสผ่านพวงกุญแจของคุณกับรหัสผ่านการเข้าสู่ระบบของคุณ สิ่งนี้ (ในทางทฤษฎี) จะหลีกเลี่ยงพรอมต์รหัสผ่าน แต่มัน คงจะ ต้องการอย่างน้อย X-session พื้นฐานที่จะใช้งาน

มีของ Ubuntu หนึ่งข้อบกพร่อง / สิ่งที่ปรารถนา บน Launchpad ที่ร้องขอทำให้ง่ายต่อการจัดการกับระบบที่ไม่มีหัว ขอแนะนำให้สร้างจากแหล่งที่มาอย่างชัดเจนสำหรับการติดตั้งที่มีน้ำหนักเบา (เพื่อหลีกเลี่ยงความต้องการไลบรารี GUI ทั้งหมดและอื่น ๆ ) ความคิดเห็นนี้ เก่า แต่น่าสนใจเป็นพิเศษ:

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

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

ฉันไม่สามารถบอกได้ว่า "บริการการพิสูจน์ตัวตนที่มีประสิทธิภาพมากขึ้น" นี้ถูกนำมาใช้กับ Lucid หรือไม่ ขึ้นอยู่กับการพึ่งพาแพคเกจดูเหมือนว่าไคลเอนต์ Ubuntu One ยังคงพึ่งพา python-gnomekeyring


0

ฉันประสบความสำเร็จในการทำให้ mysql-workbench ทำงานร่วมกับ gnome-keyring ในเซสชั่น SSH แบบ x-forwarded นี่เป็นบัญชีที่ใช้การรับรองความถูกต้อง publickey (ไม่มีรหัสผ่าน)

ฉันใช้ dbus-run-session เพื่อให้บรรลุสิ่งนี้เมื่อเชื่อมต่อกับเซสชัน ssh:

dbus-run-session bash -c 'GNOME_KEYRING_CONTROL=1 mysql-workbench --verbose'

หวังว่าข้อมูลนี้จะเป็นประโยชน์กับใครบางคน!

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