วิธีถอดรหัสชื่อโฮสต์ของ. ssh / known_hosts ด้วยรายชื่อโฮสต์


14

ฉันพยายามที่จะหาสคริปต์ไปถอดรหัส (unhash) ชื่อโฮสต์ SSH ในแฟ้ม known_hosts โดยผ่านรายการ hostnamses

ดังนั้นการย้อนกลับของ :

ssh-keygen -H -f known_hosts

หรือทำเช่นเดียวกันหากตั้งค่า ssh HashKnownHosts เป็น No:

ssh-keygen -R know-host.com -f known_hosts
ssh-keyscan -H know-host.com >> known_hosts

แต่ไม่ต้องดาวน์โหลดคีย์โฮสต์อีกครั้ง (เกิดจาก ssh-keyscan)

สิ่งที่ต้องการ:

ssh-keygen --decrypt -f known_hosts --hostnames hostnames.txt

โดยที่ hostnames.txt มีรายการชื่อโฮสต์


known_hostsชื่อโฮสต์เป็นส่วนหนึ่งของรายการใน ถอดรหัสคืออะไร
muru

2
ฉันหมายถึงไฟล์ crypted known_hosts โดยที่ ssh config HashKnownHosts คือใช่ ฉันแก้ไขชื่อ
Xorax

คำตอบ:


22

บรรทัดในknown_hostsไฟล์ไม่ถูกเข้ารหัส แต่จะถูกแฮช คุณไม่สามารถถอดรหัสได้เนื่องจากไม่ได้เข้ารหัส คุณไม่สามารถ“unhash” พวกเขาเพราะที่สิ่งที่กัญชาเป็นข้อมูลเกี่ยวกับ - รับกัญชา, มันimpossible¹เพื่อค้นพบสายเดิม วิธีเดียวที่จะ "ปลด" คือการคาดเดาสตริงเดิมและตรวจสอบการเดาของคุณ

หากคุณมีรายการชื่อโฮสต์คุณสามารถส่งผ่านไปยังssh-keygen -Fและแทนที่ด้วยชื่อโฮสต์

while read host comment; do
  found=$(ssh-keygen -F "$host" | grep -v '^#' | sed "s/^[^ ]*/$host/")
  if [ -n "$found" ]; then
    ssh-keygen -R "$host"
    echo "$found" >>~/.ssh/known_hosts
  fi
done <hostnames.txt

¹ ในทางปฏิบัติกล่าวคือจะต้องใช้คอมพิวเตอร์ทั้งหมดที่มีอยู่ในปัจจุบันนานกว่ายุคปัจจุบันของเอกภพที่จะทำ


13

ssh-keygen (1) หน้าคนพูดว่าสำหรับ-F hostnameตัวเลือก:

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

นี่เป็นสิ่งที่คุณต้องการ


ส่งคืนบรรทัดด้วยชื่อโฮสต์ที่แฮช ฉันต้องการปล่อยมันเพื่อแทนที่ในไฟล์ known_hosts มันต้องการสคริปต์เพื่อแยกแต่ละบรรทัดยกเลิกการแฮชแล้วแทนที่มันในไฟล์ known_hosts
Xorax

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