W ciągu ostatnich kilku tygodni zbudowałem kilka maszyn wirtualnych. Problem w tym, że .ssh/known_hosts
daje mi Człowieka w środku ostrzeżenia. Dzieje się tak, ponieważ z adresem IP maszyny wirtualnej powiązany jest inny odcisk palca.
W .ssh/known_hosts
pliku nie znajduję jednak rekordu związanego z adresem IP, tylko dwa dziwne, podobne do klucza ciągi i „ssh-rsa”.
Czy ktoś ma jakieś pomysły na temat usuwania starego klucza known_hosts
?
ssh
hosts
openssh
man-in-the-middle
Adam Matan
źródło
źródło
HashKnownHosts yes
ustawiony jest twój ssh_config .Odpowiedzi:
Zmodyfikuje plik ~ / .ssh / known_hosts: 6, usuwając szósty wiersz.
Moim zdaniem używanie
ssh-keygen -R
jest lepszym rozwiązaniem dla zaawansowanego użytkownika openssh, podczas gdy zwykły administrator Linuksa lepiej by utrzymał swoje umiejętności w świeżości, używając powyższej metody.źródło
/etc/sudoers
bez problemu edytowalivisudo
. Jeśli chcesz wyostrzyć swojesed
umiejętności, zrób to bez zepsucia systemu.ssh-keygen -R
ised -i {line}d
są dość „oficjalne”, i oba będą działać w dającej się przewidzieć przyszłości. Util ssh-keygen pozwala na usuwanie według numeru linii, oba są całkowicie akceptowalne (ponieważ numery linii są często łatwiejsze w obsłudze i mniej podatne na błędy niż w przypadku nazw hostów nowoczesnych centrów danych).man ssh-keygen
Wspomina takżessh-keygen -R hostname
, że właśnie powiedziałeś,ssh-keygen -R
nie podając nazwy hosta, i nie wyjaśniłeś, co masz na myśli.Najprostszym rozwiązaniem jest:
ssh ponownie utworzy plik, ale stracisz sprawdzanie klucza dla innych hostów!
Lub możesz użyć:
Lub komunikat ssh „man-in-the-middle” powinien wskazywać, która linia pliku znanego_hosta ma szkodliwy odcisk palca. Edytuj plik, przeskocz do tego wiersza i usuń go.
źródło
ssh-keygen -R hostname
też będzie działać.ssh-keygen
Opcja została dodana, ponieważ z komentarzem, ale bez wyjaśnienia. Nie sądzę, że ta odpowiedź zasługuje na tak wiele pozytywnych opinii.Do tego celu służy przełącznik ssh-keygen (
-R
).man ssh-keygen
czyta:źródło
[localhost]:port
, używając nawiasów, ponieważ użyłem niestandardowego portu. Jak powiedzieli inni, do rozwoju mojego systemu przejściowego / testowego użyłbym również metody sprawdzania klucza bez SSH.Ostrzeżenie wyświetli dokładną linię w znanym pliku hosts.
Oto przykład:
Widzisz
/home/user/.ssh/known_hosts:6
część? Określa numer pliku i linii.źródło
Aby pozbyć się tego problemu, uruchom następujące polecenie. Otwórz terminal i wpisz następujące polecenie:
Dla wszystkich poniższych przykładów po prostu zamień wartość po -R
źródło
ssh-keygen -R
niż jakakolwiek inna jak dotąd odpowiedź. Pokazuje przykładowo dokładnie, po czym możesz napisać-R
. Ta odpowiedź jest więc warta, mimo że nie jest to zupełnie nowa odpowiedź.Możesz także poinstruować ssh, aby nie sprawdzał pliku znane_hosty przy użyciu flag UserKnownHostsFile i StrictHostKeyChecking.
Na przykład:
W celu ułatwienia użytkowania możesz użyć aliasu:
Teraz możesz po prostu boldssh, gdy masz pewność, że ufasz certyfikatowi serwera.
źródło
~/.ssh/known_hosts
być na bieżąco? Dlaczego nie skorzystać i skorzystaćtelnet
? „ilekroć jesteś pewien” - jeśli jesteś pewien, to nie masz pojęcia, czym jest atak MITM i prawdopodobnie powinieneś poświęcić trochę czasu na przeczytanie dobrej literatury.Wszystkie odpowiedzi są dobre, ale dla prawdziwego SSH pro brakuje nam informacji, jak usunąć podpis ssh z numerem portu.
Proste polecenie usuwania podpisu hosta SSH:
Złożone usuwanie klucza ssh, np. Łączysz się z ssh na niestandardowym porcie 222:
a pojawi się ostrzeżenie. Aby to usunąć, musisz użyć nawiasu kwadratowego, numer portu dwukropka:
Mam nadzieję, że pomoże to niestandardowym użytkownikom konfiguracji.
źródło
Oto metoda wykorzystująca edytor Ex:
gdzie 6. to numer twojej linii wymieniony w komunikacie ostrzegawczym. Tak jak ten:
Ogólnie zaleca się, aby używać
ex
do edycji plików w sposób nieinteraktywny , zamiast tegosed
, co jest raczej iteracją S tream ED i jego-i
parametrem, który jest niestandardowym rozszerzeniem FreeBSD.źródło
Wpis nazwy hosta lub adresu ip powinien znajdować się w pierwszej kolumnie. Ostrzeżenie powinno także zawierać numer wiersza, w którym leży przestępca.
źródło
Możesz także usunąć pojedynczą linię ze znanych hostów za pomocą np. Rmknownhost 111 (111 to linia do usunięcia):
Zapisz to jak
rmknownhost
w folderze z twojegoPATH
.źródło
sshdel() { sed -i "${@}d" ~/.ssh/known_hosts; }
i wywołaj za pomocąsshdel [line number]
. bez rubinu, bez plików binarnych, bez zmartwień.To jest plik tekstowy. Możesz łatwo edytować za pomocą vi (m) i po prostu usunąć dany wiersz (dd) i zapisać plik (wq). Ale jeśli istnieje specjalne polecenie usuwania hosta, jest to prawdopodobnie najbezpieczniejsza metoda.
źródło