Ana makine adlarının bir listesiyle şifrelenmiş bir .ssh / known_hosts ana bilgisayar adlarının şifresini nasıl çözebilirim?


14

Hostnamses listesini geçirerek bilinen_hosts dosyasındaki ssh ana makine adlarının şifresini çözmek (unhash) için bir komut dosyası bulmaya çalışıyorum .

Yani, tam tersini yapmak için :

ssh-keygen -H -f known_hosts

Veya, ssh config HashKnownHosts Hayır olarak ayarlanmışsa, bununla aynı şeyi yapmak için:

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

Ancak ana bilgisayar anahtarını yeniden indirmeden (ssh-keyscan neden olur).

Gibi bir şey:

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

Burada hostnames.txt dosyası bir ana makine adı listesi içerir.


Ana makine adları, içindeki girişlerin bir parçasıdır known_hosts. Şifresini çözmek ne?
muru

2
Şifrelenmiş bilinen_hosts dosyası demek istiyorum. Ssh config HashKnownHosts nerede Evet. Başlığı değiştirdim.
Xorax

Yanıtlar:


22

known_hostsDosyadaki satırlar şifrelenmez, karma yapılır. Şifrelenmedikleri için bunların şifresini çözemezsiniz. Onları “tökezleyemezsiniz”, çünkü bir karma her şeyle ilgilidir - karma verildiğinde, orijinal dizeyi keşfetmek imkansızdır. “Unhash” ın tek yolu orijinal dizeyi tahmin etmek ve tahmininizi doğrulamaktır.

Ana bilgisayar adlarının bir listeniz varsa, bunları ssh-keygen -Fana bilgisayar adıyla geçirebilir ve ana bilgisayar adıyla değiştirebilirsiniz.

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

¹ pratik anlamda, bunu yapmak için evrenin şimdiki yaşından daha uzun bugün var olan tüm bilgisayarları alacağını yani.


13

Ssh-keygen (1) kılavuz sayfası -F hostnameseçenek için şunları söyler :

Bilinen_hosts dosyasında, belirtilen olayları listeleyerek belirtilen ana bilgisayar adını arayın. Bu seçenek, karma ana bilgisayar adlarını veya adreslerini bulmak için kullanışlıdır ve ayrıca -Hbulunan anahtarları karma biçiminde yazdırma seçeneğiyle birlikte kullanılabilir .

Bu istediğin gibi görünüyor.


Bu, karma ana bilgisayar adına sahip satırı döndürür. Bilinen_hosts dosyasında değiştirmek için unhash istiyorum. Her satırı ayrıştırmak, ayırmak ve daha sonra bilinen_hosts dosyasında değiştirmek için bir komut dosyasına ihtiyaç duyar.
Xorax

2
@Xorax Evet, ancak bu komutla karma ana bilgisayar adını alabilir ve known_hostsdosyadaki yerine kullanabilirsiniz sed.
vinc17
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.