Làm cách nào để giải mã tên máy chủ của một .ssh / know_hosts được mã hóa bằng danh sách tên máy chủ?


14

Tôi cố gắng tìm một tập lệnh để giải mã (không xóa) tên máy chủ ssh trong tệp know_hosts bằng cách chuyển danh sách tên máy chủ .

Vì vậy, để làm chính xác điều ngược lại :

ssh-keygen -H -f known_hosts

Hoặc cũng vậy, để làm tương tự như thế này nếu cấu hình ssh HashKnownhosts được đặt thành Không:

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

Nhưng không tải lại khóa máy chủ (gây ra bởi ssh-keyscan).

Cái gì đó như:

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

Trong đó hostnames.txt chứa danh sách tên máy chủ.


Tên máy chủ là một phần của các mục trong known_hosts. Điều gì để giải mã?
muru

1
Tôi có nghĩa là cho một tập tin know_hosts được mã hóa. Trong đó ssh config HashKnownhosts là Có. Tôi đã sửa đổi tiêu đề.
Xorax

Câu trả lời:


22

Các dòng trong known_hoststệp không được mã hóa, chúng được băm. Bạn không thể giải mã chúng, vì chúng không được mã hóa. Bạn không thể xóa được chúng, bởi vì đó là tất cả những gì về hàm băm - với hàm băm, không thể phát hiện ra chuỗi gốc. Cách duy nhất để không bị tấn công, là đoán chuỗi gốc và xác minh dự đoán của bạn.

Nếu bạn có một danh sách các tên máy chủ, bạn có thể chuyển chúng đến ssh-keygen -Fvà thay thế chúng bằng tên máy chủ.

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

¹ Trong một cảm giác thực tế, tức là nó sẽ mất tất cả các máy tính hiện nay dài hơn tuổi hiện tại của vũ trụ để làm điều đó.


13

Trang man ssh-keygen (1) cho biết -F hostnametùy chọn:

Tìm kiếm tên máy chủ được chỉ định trong tệp đã biết, liệt kê bất kỳ lần xuất hiện nào được tìm thấy. Tùy chọn này hữu ích để tìm tên máy chủ hoặc địa chỉ băm và cũng có thể được sử dụng cùng với -Htùy chọn in các khóa tìm thấy ở định dạng băm.

Đây dường như là những gì bạn muốn.


Điều này trả về dòng với tên máy chủ băm. Tôi muốn hủy bỏ nó để thay thế nó trong tập tin đã biết. Nó cần một đoạn script để phân tích từng dòng, bỏ băm nó và sau đó thay thế nó trong tệp know_hosts.
Xorax

2
@Xorax Có, nhưng với lệnh này, bạn có thể truy xuất tên máy chủ được băm và thay thế nó trong known_hoststệp bằng sed.
vinc17
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.