มีการพูดคุยสั้น ๆ เกี่ยวกับ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
ssh-agent
จะรู้ว่าเมื่อช่วงที่ไม่ได้ใช้งาน แต่อย่างน้อยเริ่มต้นจากการหมดเวลาเมื่อใดก็ตามที่การดำเนินการลงนามในครั้งสุดท้ายที่เกิดขึ้นไม่เพียง แต่เมื่อssh-agent
ได้รับการเปิดตัว นอกจากนี้ฉันใช้บัญชีผู้ใช้และคีย์ไฟล์แยกกันสำหรับแต่ละบทบาทของสคริปต์แล้ว sudoers อนุญาตให้ใช้คำสั่ง 1 หรือ 2 คำสั่งเท่านั้นหากจำเป็นและฉันดูที่lshell
จะล็อคสิ่งต่างๆเพิ่มเติม แต่ทั้งหมดที่ยังไม่ได้ปลดเปลื้องฉันจากความต้องการที่จะปกป้อง keyfiles ของฉัน: เพียงเพราะsudo zfs send
คำสั่งเดียวที่ได้รับอนุญาตสำหรับคีย์ที่กำหนดนั่นเป็นคำสั่งที่ทรงพลังสำหรับใครก็ตามที่ใช้คีย์นั้น!
ControlMaster
/ ControlPath
/ ControlPersist
ตัวเลือก (ดูman ssh_config
) สำหรับสคริปต์ของคุณ อย่างน้อยถ้ามันเชื่อมต่อกับโฮสต์เดียวเท่านั้น
ssh-agent
เก็บกุญแจไว้จนกว่าฉันจะรีบูท (ซึ่งอาจเป็นสัปดาห์)
ssh-agent
ไม่เชื่อเรื่องพระเจ้ากับประเภทของเซสชันที่เป็นส่วนหนึ่งของ (เช่นเซสชัน tty เซสชัน X11 หรืออย่างอื่น) สิ่งหนึ่งที่ฉันอยากจะบอกถ้าสคริปต์อัตโนมัติของคุณอาจไม่ควรขึ้นอยู่กับคีย์ที่โหลดในเอเจนต์ของคุณ พวกเขาควรแต่ละคนมีคีย์ส่วนตัวของตัวเองซึ่งได้รับอนุญาตผ่านคำสั่งบังคับบนเซิร์ฟเวอร์ที่เหมาะสมในการเรียกใช้เฉพาะคำสั่งระยะไกลเฉพาะที่แต่ละสคริปต์ต้องทำงาน และแน่นอนว่าเราจะช่วยให้คุณทำงานจาก cron ฯลฯ ...