ทำให้รหัสผ่านของฉันได้รับการป้องกันคีย์ SSH หมดอายุหรือหมดเวลาหลังจากไม่นาน


12

ฉันมีคีย์ SSH ส่วนตัวผมใช้สำหรับการตรวจสอบที่ถูกเก็บไว้ใน~ / .ssh / id_rsa เมื่อฉันเข้าสู่เซิร์ฟเวอร์ฉันได้รับแจ้งให้ป้อนรหัสผ่านเพื่อปลดล็อครหัส:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันชอบสิ่งนี้. ฉันก็ชอบที่ฉันสามารถ ssh ซ้ำแล้วซ้ำอีกและมันไม่ได้แจ้งให้ฉันสำหรับรหัสผ่านของฉัน

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

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

คำตอบ:


4

แทนที่จะปรับแต่ง ssh-agent (ซึ่งตอนนี้ต้องใช้การแฮ็กจำนวนมาก) ฉันขอแนะนำอย่างยิ่งให้คุณเปลี่ยนการตั้งค่าบนพวงกุญแจเริ่มต้น (ล็อกอิน) ของคุณ ฉันใช้ 'ล็อคการนอนหลับ' ที่เป็นประโยชน์มากเช่นเดียวกับ 'ล็อคหลังจาก 4 ชั่วโมง' เพราะฉันไม่ต้องการพรอมต์เว้นแต่ว่าฉันกำลัง afk

เปิดการเข้าถึงของ Keychain และคลิกขวาที่พวงกุญแจการเข้าสู่ระบบเพื่อเปลี่ยนการตั้งค่า: การตั้งค่าความปลอดภัยของ Keychain

หรือถ้าคุณชอบ commandline:

security set-keychain-settings -lu -t 14400

สิ่งนี้จะส่งผลให้มีการแจ้งเตือนพิเศษอย่างน้อยหนึ่งครั้งสำหรับการปลดล็อคพวงกุญแจ (ต้องใช้รหัสผ่านการเข้าสู่ระบบของคุณ) เช่นเดียวกับการแจ้งให้ทราบว่าคุณต้องการใช้คีย์ใด ...


นี่ไม่ใช่ตัวเลือกใน El Capitan สำหรับฉันและคำสั่ง commandline ดูเหมือนจะไม่สร้างความแตกต่างใด ๆ คุณรู้หรือไม่ว่ามีตัวเลือกที่คล้ายกันใน El Capitan
เอียน

1
ค่อนข้างแน่ใจว่าฉันสามารถทำสิ่งนี้ได้ใน El Cap - ฉันเพิ่งตรวจสอบและทั้งสองวิธี (UI และ cmdline) ยังคงใช้ได้กับ Sierra อย่างแน่นอน ฉันสามารถทำได้บนพวงกุญแจการเข้าสู่ระบบเท่านั้นไม่ใช่ System หรือ iCloud
Dave Gregory

9

หมายเหตุ : ใน OS X เวอร์ชั่นใหม่กว่าคุณต้องปิดการใช้งานการป้องกันความสมบูรณ์ของระบบเพื่อให้คำตอบนี้สามารถใช้งานได้ (ขอบคุณ @Dave Gregory และ @Jaap สำหรับการชี้เรื่องนี้)

เปิด/System/Library/LaunchAgents/com.openssh.ssh-agent.plist(ในเวอร์ชันที่เก่ากว่า:) org.openbsd.ssh-agent.plistในเท็กซ์เอดิเตอร์ แทนที่:

<key>ProgramArguments</key>
<array>
    <string>/usr/bin/ssh-agent</string>
    <string>-l</string>
</array>

ด้วย:

<key>ProgramArguments</key>
<array>
    <string>/usr/bin/ssh-agent</string>
    <string>-l</string>
    <string>-t</string>
    <string>30m</string>
</array>

การดำเนินการนี้จะหมดอายุคีย์หลังจาก 30 นาที

Reboot เดี๋ยวก่อนรีบูต?! นี่ไม่ใช่ Windows! ใช่รีบูต

คุณสามารถลองถอดรหัสคำแนะนำในการเปลี่ยนการตั้งค่าได้ทันทีแต่ขอให้โชคดี


1
คนอวดรู้อย่างฉันจะแทนที่ "1800" ด้วย "30m" เพราะทำให้อ่านง่ายขึ้น ดู TIME FORMATS ใน sshd_config (8) สำหรับรูปแบบเต็ม
โทนี่วิลเลียมส์

@Tony Williams เจ๋ง! คงที่
Michael Kropat

ดูเหมือนว่าจะไม่ได้ผลสำหรับฉันใน Yosemite; ใครอีกไหม?
Dave Gregory

ฉันพบวิธีแก้ปัญหาในโยเซมิตีที่ไม่เกี่ยวข้องกับการปิดใช้งานการป้องกันความสมบูรณ์ของระบบ เพิ่มเป็นคำตอบด้านล่าง
Dave Gregory

1
ขอบคุณสำหรับข้อมูล @Jaap ฉันไม่ได้ใช้ OS-X แบบวันต่อวันในขณะนี้ดังนั้นฉันไม่สามารถตรวจสอบสิ่งใดเป็นการส่วนตัวได้ แต่เพื่อลองและเป็นสจ๊วตที่ดีของคำถาม & คำตอบนี้ฉันได้อัปเดตคำตอบตามข้อมูลของคุณและเปลี่ยนคำตอบที่ยอมรับของ Dave Gregory เนื่องจากการปิดใช้งานการป้องกันความสมบูรณ์ของระบบดูเหมือนจะไม่เหมาะสมในหลายกรณี
Michael Kropat

7

คุณต้องกำหนดชีวิตของกุญแจ ตามปกติแล้วค่าเริ่มต้นจะเป็นตลอดไป

เมื่อคุณเรียกใช้ssh-addคุณต้องการใช้-tตัวเลือก หากคุณต้องการชีวิตที่สำคัญของหนึ่งชั่วโมงก็เป็นssh-add -t 1hได้ รูปแบบเวลาสามารถดูได้ในsshd_configman page แต่ใส่เพียงตัวเลขตามด้วย s, m, h, d, หรือ w เป็นวินาที, นาที, ชั่วโมง, ชั่วโมง, วันหรือสัปดาห์

ssh-addสามารถใส่ลงในไฟล์. bashrc ของคุณและมันจะขอให้คุณยืนยันรหัสอีกครั้ง แม้ว่าคีย์ "หมดอายุ" จะไม่ถูกลบออก แต่เพียงแค่ขอให้ใส่ข้อความรหัสผ่านอีกครั้งเมื่อมีการพยายามใช้งาน

ตัวเลือกอื่นจะแก้ไขตัวเลือกการเปิดใช้ssh-agentที่เก็บไว้ใน/System/Library/LaunchAgents/org.openbsd.ssh-agent.plistและเพิ่มที่-tนั่น (ฉันใช้LaunchControlสำหรับการเปลี่ยนแปลงสิ่งเหล่านี้ แต่คุณสามารถทำได้ด้วยตนเองหากคุณระมัดระวัง)


ฉันไม่ควรจำที่จะเรียกใช้ssh-addด้วยตนเองก่อนที่จะเรียกใช้sshทุกครั้ง มันน่าสนใจ แต่ฉันกำลังมองหาบางสิ่งอัตโนมัติ
Michael Kropat

+1 ขอบคุณที่org.openbsd.ssh-agent.plist
ชี้นำ

1

โซลูชันอื่นคือ:

ssh-add -t <time> <ssh-private-key>  # Set maximum lifetime to your SSH priv key.
killall ssh-agent                    # Kill all ssh-agent processes.
ssh-add -D                           # Delete all identities recorded by the agent.

ด้วยโซลูชันนี้คุณไม่ต้องเลือกการหมดเวลาใช้งานกับพวงกุญแจทั้งหมดของคุณ - ค่อนข้างน่ารำคาญเมื่อคุณต้องการตั้งค่าการหมดเวลาไม่กี่วินาทีในการบันทึกรหัสผ่านคีย์ส่วนตัวของคุณ - และคุณไม่ต้องปิดการใช้งาน SIP เพื่อแก้ไข / ระบบ / ห้องสมุด / LaunchAgents / org.openbsd.ssh-agent.plist

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