Jak odszyfrować nazwy hostów zaszyfrowanych plików .ssh / znanych_hostów za pomocą listy nazw hostów?


14

Próbuję znaleźć skrypt do odszyfrowania (odblokowania) nazw hostów ssh w pliku znanych_hostów, przekazując listę nazw hostów .

Zrób dokładnie odwrotność :

ssh-keygen -H -f known_hosts

Lub też, aby zrobić to samo, jeśli dla parametru sash config HashKnownHosts jest ustawiona wartość Nie:

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

Ale bez ponownego pobierania klucza hosta (spowodowane przez ssh-keyscan).

Coś jak:

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

Gdzie hostnames.txt zawiera listę nazw hostów.


Nazwy hostów są częścią wpisów w known_hosts. Co odszyfrować?
muru

2
Mam na myśli zaszyfrowany plik znany_hosty. Gdzie Ssh config HashKnownHosts ma wartość Tak. Zmieniłem tytuł.
Xorax,

Odpowiedzi:


22

Linie w known_hostspliku nie są szyfrowane, są mieszane. Nie można ich odszyfrować, ponieważ nie są one szyfrowane. Nie można ich „odhashować”, ponieważ na tym polega hash - biorąc pod uwagę hash, niemożliwe jest odkrycie oryginalnego ciągu. Jedynym sposobem na „odhashowanie” jest odgadnięcie oryginalnego ciągu i zweryfikowanie zgadnięcia.

Jeśli masz listę nazw hostów, możesz przekazać je ssh-keygen -Fi zastąpić nazwą hosta.

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

¹ W sensie praktycznym, tj. Zajęłoby to wszystkim komputerom istniejącym dziś dłużej niż obecny wiek wszechświata.


13

Strona podręcznika ssh-keygen (1) mówi o -F hostnameopcji:

Wyszukaj określoną nazwę hosta w pliku znanego_hosta, wyświetlając wszystkie znalezione wystąpienia. Ta opcja jest przydatna do znajdowania zaszyfrowanych nazw hostów lub adresów i może być również używana w połączeniu z -Hopcją drukowania znalezionych kluczy w formacie mieszanym.

To wydaje się być tym, czego chcesz.


Zwraca linię z zaszyfrowaną nazwą hosta. Chcę go odblokować, aby zastąpić go w pliku znane_hosty. Potrzebuje skryptu, aby przeanalizować każdą linię, usunąć hasz, a następnie zastąpić ją w pliku znane_hosty.
Xorax,

2
@ Xorax Tak, ale za pomocą tego polecenia można pobrać zaszyfrowaną nazwę hosta i zastąpić ją w known_hostspliku sed.
vinc17
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.