Linux SSH ล็อกอินด้วยใบรับรองหมดอายุ


1

ฉันมี Ubuntu 16.06 Rootserver และมีคนอื่นอีกหลายคนที่อาจต้องลงชื่อเข้าใช้ในฐานะผู้ใช้พิเศษ

ฉันไม่ต้องการส่งรหัสผ่านหรือแม้แต่กุญแจส่วนตัว

เป็นไปได้หรือไม่ที่จะสร้างคีย์ที่หมดอายุใน +3 วันหลังรุ่นโดยไม่แตะสิ่งใดบนเซิร์ฟเวอร์?

นั่นคือใบรับรองหลักที่เซิร์ฟเวอร์รู้และฉันได้รับในที่ปลอดภัยซึ่งฉันสามารถใช้เพื่อสร้างคีย์เหล่านั้นด้วยวันหมดอายุได้หรือไม่

คำตอบ:


6

หรือแม้แต่กุญแจส่วนตัว

ทำไมจะคุณเคยส่งคีย์ส่วนตัว? ขอให้ผู้ใช้ในการสร้าง keypair ของตัวเองและพวกเขาได้ส่งคุณคีย์สาธารณะ

เป็นไปได้หรือไม่ที่จะสร้างกุญแจที่หมดอายุใน +3 วันหลังรุ่น

สมมติว่าเซิร์ฟเวอร์ใช้ OpenSSH มีสองวิธี:

  • ใบรับรอง : รองรับ OpenSSH 5.4 หรือใหม่กว่า แต่ผู้ใช้ทุกคนต้องใช้ OpenSSH เช่นกัน - ใบรับรองที่สร้างขึ้นไม่สามารถทำงานกับ PuTTY หรือไคลเอนต์อื่น ๆ

    ขั้นแรกให้สร้างคีย์ "สิทธิ์" SSH ด้วยssh-keygenและแสดงรายการในการกำหนดค่าเซิร์ฟเวอร์ (โดยใช้TrustedUserCAKeysตัวเลือก) จากนั้นใช้เพื่อออกใบรับรองผู้ใช้

    ในการออกใบรับรอง: เมื่อผู้ใช้ส่งid_rsa.pubไฟล์ให้คุณให้เซ็นชื่อด้วยคีย์ CA เมื่อลงชื่อแล้วให้ส่งid_rsa.pub-certไฟล์ใหม่กลับไปยังผู้ใช้

    ssh-keygen -s ~/private/user_ca -I user_fred -n fred -V +3d fred_id_rsa.pub
    

    ที่นี่-nระบุผู้ที่สามารถเข้าสู่ระบบโดยใช้ใบรับรองและ-Vตั้งเวลาหมดอายุ ( -Iตัวเลือกเพียงแค่ตั้งชื่อโดยพลการสำหรับใบรับรองเอง)

  • authorized_keys : รองรับ OpenSSH 7.7 หรือใหม่กว่าโดยไม่มีข้อกำหนดของลูกค้า ข้อมูลการหมดอายุไม่ได้ถูกจัดเก็บภายในคีย์ แต่ในไฟล์authorized_keysของเซิร์ฟเวอร์:

    expiry-time="20180704" ssh-ed25519 AAAAC3NzaC1lZDI1NTE...
    

    จากหน้าคู่มือsshd (8)รูปแบบเวลาที่อนุญาตคือYYYYMMDDและYYYYMMDDHHMM[SS]ในเขตเวลาหลักของเซิร์ฟเวอร์

    โปรดทราบว่าวิธีนี้จะปลอดภัยหากผู้ใช้ถูกป้องกันไม่ให้แก้ไขไฟล์ authorized_keys ของพวกเขามิฉะนั้นพวกเขาก็สามารถขยายเวลาหมดอายุ!

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