มีเหตุผลทางเทคนิคหรือไม่ว่าทำไม ssh-agent ขาดคุณสมบัติการหยุดพักชั่วคราว / ไม่มีการใช้งานเหมือน sudo


9

มีการพูดคุยสั้น ๆ เกี่ยวกับssh-agent -tคุณลักษณะที่มีอยู่ที่ [1] และมีโพสต์ที่ไกลที่สุดเท่าที่ปี 2001 เรื่องเดเบียน - เดเวล [2] ที่ต้องการคุณสมบัติการหมดเวลาที่ไม่ได้ใช้งาน มีการสนทนาที่คล้ายกันที่นี่ใน SE [3] สำหรับการประกวด

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

  • ตั้งค่าอายุการใช้งานของกุญแจของคุณในตัวแทนเป็นระยะเวลานานอย่างน่าเป็นห่วงเช่น 1 ชม. หรืออะไรก็ตามที่สคริปต์ของคุณอาจใช้งานได้นานที่สุด (ฉันสงสัยว่าหลายคนอนุญาตให้หมดเวลา sudo ของพวกเขาอีกครั้งเพื่อยืดเวลานั้น!) - แต่seahorse/ gnome-keyring-daemonแทบจะไม่สนับสนุนสิ่งนี้มาก [4]
  • ดูแลสคริปต์ที่ใช้งานยาวนานของคุณและให้ป้อนรหัสผ่านของคุณใหม่ทุก ๆ 5/10/15 นาที: ตอนนี้คุณสามารถดูข้อความรหัสผ่านของคุณได้อย่างง่ายดาย 20 ครั้งต่อวัน
  • เจาะวิธีแก้ไขปัญหา home-brew ของคุณเพื่อเลียนแบบคุณลักษณะที่ขาดหายไปนี้อาจรวมกับ shell shell ของTMOUTเชลล์ (ขอขอบคุณผู้ใช้บน freenode #openssh IRC สำหรับคำแนะนำนั้น)
  • ไม่มีการตั้งค่าอายุการใช้งานคีย์เลยนั่นคือตัวแทนของคุณเก็บกุญแจของคุณไว้ตลอดไปหรือจนกว่าคุณจะฆ่า / รีบูต

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

ฉันได้ทดลองกับ gpgkey2ssh และสมาร์ทการ์ด แต่วิธีนี้ไม่ได้แก้ปัญหานี้โดยเฉพาะ: ฉันยังต้องการฟังก์ชั่น ssh-agent และฉันไม่ต้องการให้ตรวจสอบซ้ำทุกๆ 5 นาทีเพื่อป้องกันไม่ให้กุญแจส่วนตัวของฉันถูกเปิดเผย ในหน่วยความจำในขณะที่คอมพิวเตอร์ของฉันไม่ได้ใช้งาน

ฉันทำผิดหรือเปล่า?

[1] การกำหนดค่าการหมดเวลาเริ่มต้นสำหรับตัวแทน SSH

[2] https://lists.debian.org/debian-devel/2001/09/msg00851.html

[3] /server/518312/putty-pageant-forget-keys-after-period-of-inactivity

[4] https://bugs.launchpad.net/ubuntu/+source/gnome-keyring/+bug/129231


1
ไม่ใช่คำตอบ แต่ใช่มีความท้าทายทางเทคนิคบางประการเกี่ยวกับวิธีตรวจหาการไม่ใช้งานเซสชันเมื่อssh-agentไม่เชื่อเรื่องพระเจ้ากับประเภทของเซสชันที่เป็นส่วนหนึ่งของ (เช่นเซสชัน tty เซสชัน X11 หรืออย่างอื่น) สิ่งหนึ่งที่ฉันอยากจะบอกถ้าสคริปต์อัตโนมัติของคุณอาจไม่ควรขึ้นอยู่กับคีย์ที่โหลดในเอเจนต์ของคุณ พวกเขาควรแต่ละคนมีคีย์ส่วนตัวของตัวเองซึ่งได้รับอนุญาตผ่านคำสั่งบังคับบนเซิร์ฟเวอร์ที่เหมาะสมในการเรียกใช้เฉพาะคำสั่งระยะไกลเฉพาะที่แต่ละสคริปต์ต้องทำงาน และแน่นอนว่าเราจะช่วยให้คุณทำงานจาก cron ฯลฯ ...
Celada

ผมไม่ได้คาดหวังว่าssh-agentจะรู้ว่าเมื่อช่วงที่ไม่ได้ใช้งาน แต่อย่างน้อยเริ่มต้นจากการหมดเวลาเมื่อใดก็ตามที่การดำเนินการลงนามในครั้งสุดท้ายที่เกิดขึ้นไม่เพียง แต่เมื่อssh-agentได้รับการเปิดตัว นอกจากนี้ฉันใช้บัญชีผู้ใช้และคีย์ไฟล์แยกกันสำหรับแต่ละบทบาทของสคริปต์แล้ว sudoers อนุญาตให้ใช้คำสั่ง 1 หรือ 2 คำสั่งเท่านั้นหากจำเป็นและฉันดูที่lshellจะล็อคสิ่งต่างๆเพิ่มเติม แต่ทั้งหมดที่ยังไม่ได้ปลดเปลื้องฉันจากความต้องการที่จะปกป้อง keyfiles ของฉัน: เพียงเพราะsudo zfs sendคำสั่งเดียวที่ได้รับอนุญาตสำหรับคีย์ที่กำหนดนั่นเป็นคำสั่งที่ทรงพลังสำหรับใครก็ตามที่ใช้คีย์นั้น!
csirac2

วิธีแก้ปัญหาอื่น ๆ : ใช้ControlMaster/ ControlPath/ ControlPersistตัวเลือก (ดูman ssh_config) สำหรับสคริปต์ของคุณ อย่างน้อยถ้ามันเชื่อมต่อกับโฮสต์เดียวเท่านั้น
Derobert

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

คำตอบ:


2

หากสิ่งนี้เกี่ยวข้องกับคุณคุณสามารถใช้xscreensaver-command -watchอินเทอร์เฟซเพื่อเรียกใช้ssh-add -Dเมื่อหน้าจอถูกล็อก ตรวจสอบหน้าคู่มือสำหรับตัวอย่างง่ายๆ

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