ssh-keyscan ไม่รับตัวเลือก ProxyCommand ของ SSH ดังนั้นพร็อกซี่ที่ตั้งค่าไว้สำหรับ ssh จึงไม่ได้ตั้งค่าตัวสแกนแยกต่างหากโดยอัตโนมัติ

วิธีหนึ่งคือใช้รีเลย์ TCP ภายในเครื่องที่สร้างไว้แล้ว ซึ่งทำการยืนยันตัวตนพร็อกซี่และการแลกเปลี่ยน CONNECT ที่จำเป็นให้เสร็จสิ้น แล้วเปิดเผยสตรีมไบต์ของเซิร์ฟเวอร์ SSH ที่ต้องการ หากรีเลย์นั้นฟังอยู่ที่ 127.0.0.1:2222:

ssh-keyscan -p 2222 127.0.0.1 > candidate.keys
ssh-keygen -lf candidate.keys

คำสั่งแรกจะรวบรวมคีย์ที่เป็นไปได้ คำสั่งที่สองแสดงลายนิ้วมือของคีย์เหล่านั้น รีเลย์ต้องปล่อยสตรีม SSH ผ่านไปหลังใช้การตอบกลับพร็อกซี่จนครบ แทนที่จะส่งส่วนหัว HTTP ให้ตัวสแกน

ป้ายชื่อโฮสต์ในผลลัพธ์อธิบายปลายทางภายในเครื่องของรีเลย์ อย่าต่อท้ายโดยไม่แก้ไขและอย่าคิดว่าตอนนี้มันระบุชื่อโฮสต์ SFTP ระยะไกลแล้ว

ตรวจสอบลายนิ้วมือผ่านบันทึกที่เชื่อถือได้หรือผู้ดูแลระบบก่อนเชื่อมคีย์กับโฮสต์และพอร์ตจริงใน known_hosts ssh-keyscan เก็บสิ่งที่ปลายทางที่เข้าถึงได้นำเสนอ การเชื่อมต่อพร็อกซี่ที่สำเร็จไม่ได้ยืนยันคีย์นั้น

บทความที่เกี่ยวข้อง