Score:0

วิธีสคริปต์ตรวจสอบว่าคีย์ในไฟล์ known_hosts ถูกต้อง

ธง tr

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

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

ฉันพยายามหาตัวเลือกใน ssh-keyscan และ ssh-keygen คำสั่งที่อาจตรวจสอบนั้น แต่ไม่พบ

วิธีที่ง่ายที่สุดในการตรวจสอบนี้คืออะไร?

Score:1
ธง vn
#!/usr/bin/env ทุบตี

โฮสต์=$1

ตั้งค่า -o ท่อล้มเหลว

HOST_KEY_LINE=$(ssh-keygen -F "$HOST" | หาง -n1)

ถ้า [ $? -เน่ 0 ]; แล้ว
  echo "$HOST ไม่อยู่ในไฟล์known_hosts"
  ทางออก 1
ไฟ

KEY_TYPE=$(echo "$HOST_KEY_LINE" | awk '{ พิมพ์ $2 }')
HOST_KEY=$(echo "$HOST_KEY_LINE" | awk '{ พิมพ์ $3 }')

ACTUAL_KEY=$(ssh-keyscan -t "$KEY_TYPE" "$HOST" 2>&1 | tail -n1 | awk '{ พิมพ์ $3 }')

ถ้า [ $? -เน่ 0 ]; แล้ว
  echo "ไม่สามารถรับรหัสจาก $HOST: $ACTUAL_KEY"
  ทางออก 1
ไฟ

ถ้า [ "$HOST_KEY" = "$ACTUAL_KEY" ]; แล้ว
  echo "known_hosts มีคีย์ที่ถูกต้อง"
  ทางออก 0
ไฟ

echo "known_hosts มีรหัสที่ไม่ถูกต้อง"
Score:0
ธง us

หากคุณมีรายชื่อโฮสต์ทั้งหมดที่มีอยู่ คุณสามารถใช้ด้านล่าง:

ssh-keyscan -t rsa,dsa -f hosts_list > ~/.ssh/known_hosts_revised

สิ่งนี้จะสร้างใหม่ known_hosts_revised ซึ่งคุณสามารถใช้เพื่อสร้างผลต่างกับกระแส know_hosts เพื่อดูความแตกต่าง

เดอะ hosts_list เนื้อหาควรเป็นดังนี้:

1.2.3.4,1.2.4.4 name.my.domain,ชื่อ,n.my.domain,n,1.2.3.4,1.2.4.4

โพสต์คำตอบ

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