Wyłącz StrictHostKeyChecking w ssh

14

Próbuję połączyć się z hostem Linux za pomocą sshi pojawia się następujący błąd

RSA host key for 10.1.1.20 has changed and you have requested strict checking.

Chciałbym to zmienić, ale nie mogę znaleźć żadnej kombinacji opcji, aby to zrobić.

Prawdopodobnie ustawiłem StrictHostKeyChecking lata temu, ale nie pamiętam jak.

Zasięgnąłem opinii, man sshktóra informuje mnie, że plik konfiguracyjny dla całego systemu jest /etc/ssh/ssh_configi domyślny plik konfiguracyjny dla użytkownika ~/.ssh/confignie istnieje.

EDYCJA Aby wyjaśnić moje pytanie, opcja jest wyraźnie ustawiona. Próbuję odkryć

  1. Gdzie są przechowywane opcje (nie mam plików wymienionych na stronie podręcznika, co wydaje się nieprawidłowe).
  2. Jak zmienić opcje.

Nie zastanawiam się, jak obejść ten problem (wiem, że mogę edytować plik znane_hosty, ale jest to żmudne za każdym razem, gdy próbuję nowego serwera).

Milliways
źródło
To jest /etc/ssh_configmoje.
sborsky,
@sborsky Też mam to (co różni się od człowieka), ale wszystkie opcje są zakomentowane.
Milliways,
Oznacza to wartość domyślną, która według strony podręcznika jest ask. Po zmianie klucza hosta klient ssh nie nawiąże połączenia, chyba że StrictHostKeyCheckingjest ustawiony na no. Jeśli klucz hosta nie zmienia się zbyt często, sugeruję usunięcie tego jednego klucza hosta z twojego ~/.ssh/known_hostszamiast zmiany konfiguracji.
sborsky,
1
Najpierw musisz dowiedzieć się, dlaczego to się zmieniło. Jeśli go nie zmieniłeś, może to być atak MitM, i oczywiście nie powinieneś pozwolić na ten klucz hosta!
Nazwa wyświetlana
uwaga dodatkowa - po usunięciu wszystkich rekordów dla danego hosta .ssh/known_hostsnadal otrzymywałem ostrzeżenie, aż znalazłem niepoprawny wiersz w innym pliku o nazwie .ssh/known_hosts2. najwyraźniej OS X używa obu
billynoah

Odpowiedzi:

18

Aby wyłączyć ścisłe sprawdzanie hosta w systemie OS X dla bieżącego użytkownika, utwórz lub edytuj ~ / .ssh / config i dodaj następujące wiersze:

Host [IP Address] 
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null

Typowym przykładem hostów w sieci lokalnej może być:

Host 10.1.1.*
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null

W zależności od użycia ssh nie polecam wyłączać ścisłego sprawdzania klucza hosta dla wszystkich hostów.

Jeśli chcesz tylko usunąć wpis dotyczący 10.1.1.20, otwórz ~ / .ssh / known_hosts w wybranym edytorze i usuń odpowiedni wiersz „10.1.1.20 ssh-rsa public-key $

klanomath
źródło
Wydaje się również działać bez linii / dev / null.
John2095,
6

Możesz po prostu wypróbować go tak, jak jest, bez konfitguracji, tylko w wierszu poleceń:

ssh -o StrictHostKeyChecking=no hostname

Ale nie sądzę, że to wszystko, czego potrzebujesz. Jeśli chcesz zignorować wszystkie sprawdzanie klucza hosta, musisz skonfigurować known_hostsplik /dev/nulltak, aby nic nie było przechowywane:

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null hostname

lub w /etc/ssh_config:

StrictHostKeyChecking no
UserKnownHostsFile /dev/null
Jakuje
źródło
Pierwszy nadal nie pozwalał mi się połączyć, ale ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null hostnametak. Nadal nie mogę znaleźć GDZIE ustawiono StrictHostKeyChecking!
Milliways,
Domyślnie jest to „tak”, więc nie trzeba go nigdzie ustawiać, aby zastosować.
Jakuje,
Dokumentacja stwierdza, że ​​domyślnie jest to tak
Milliways,
wybór jako rozwiązania pomógłby, gdyby pomógł rozwiązać problem;)
Jakuje