การตรวจสอบคีย์ ssh มีข้อความรหัสผ่าน


8

ฉันมีกลุ่มผู้ใช้ที่มีคีย์ SSH สามารถเข้าถึงบัญชีบนเซิร์ฟเวอร์อื่น ๆ ขณะนี้ฉันมีสคริปต์ที่รวบรวมคีย์สาธารณะ ssh และแจกจ่ายไปยังบัญชีที่ถูกต้องบนเซิร์ฟเวอร์ที่ถูกต้อง

สิ่งที่ฉันต้องการทำคือรับสคริปต์นั้นเพื่อตรวจสอบว่าคีย์ ssh ของผู้ใช้ที่ให้ไว้มีวลีรหัสผ่านก่อนที่จะยอมรับคีย์สาธารณะและแจกจ่ายมัน

ฉันได้พยายามหลายสิ่งเช่นการใช้ssh-agentและssh-addแล้วปัญหาที่เกิดขึ้นมาเมื่อssh-addได้รับการถามหารหัสผ่านสำหรับการ

มีวิธีที่จะได้รับบางสิ่งบางอย่างเช่นopensslการตรวจสอบวลีรหัสผ่านล้มเหลวเล็กน้อยด้วยรหัสส่งคืนของ1ถ้าคีย์มีข้อความรหัสผ่านหรือไม่?

ขอบคุณ!


คุณสามารถอธิบายได้ไหมว่าความต้องการนั้นมีข้อความรหัสผ่านหรือไม่ - และเนื่องจากเหตุผลอะไร
grawity

grawity: ความต้องการของฉันคือเพื่อให้แน่ใจว่าผู้ใช้งานได้ตั้งข้อความรหัสผ่านบนคีย์ ssh ของพวกเขาเฉพาะคีย์ที่มีข้อความรหัสผ่านเท่านั้นที่จะได้รับการแจกจ่ายไปยังเซิร์ฟเวอร์อื่น ๆ
ปีเตอร์ชาวนา

คำตอบ:


11

หาก keyfile ใช้วลีรหัสผ่านมันจะมีการตั้งค่าแอตทริบิวต์ "Proc-Type:" พร้อมกับคำว่า "ENCRYPTED" ต่อท้าย

ดังนั้นคุณสามารถตรวจสอบว่า keyfile ใช้ข้อความรหัสผ่านโดยการเรียกใช้มันผ่านfindและgrepเพื่อดูว่ามันมีสตริง 'ENCRYPTED'

# list keyfiles that USE a passphrase
HOMES=/home /mnt/nfs_home
find $HOMES -maxdepth 3 -type f -path '*/.ssh/id* -name "id_[dr]sa*" -exec grep -q "ENCRYPTED" {} \; -print

พิมพ์รายการไฟล์ที่มีวลีรหัสผ่าน จากนั้นคุณสามารถจับคู่กับรายการ keyfiles ทั้งหมดเพื่อแยกเดี่ยวที่ไม่ได้ใช้วลีรหัสผ่าน รายการของ keyfiles ทั้งหมดสามารถรับได้เช่นโดยปล่อย-execพารามิเตอร์ออกดังนี้:

# list all keyfiles
HOMES=/home /mnt/nfs_home
find $HOMES -maxdepth 3 -type f -path '*/.ssh/id* -name "id_[dr]sa*" -print

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