Wymuś, aby ssh nie drukował ostrzeżenia „Zdalna identyfikacja hosta uległa zmianie”

23

Czy istnieje sposób na uniknięcie drukowania komunikatów ostrzegawczych ssh w ten sposób?

"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r",
"@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @\r",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r",

Chociaż tożsamość zdalnego hosta uległa zmianie, ale wiem, że jest w porządku i chcę po prostu pozbyć się tego ostrzeżenia.

kubek kawy
źródło

Odpowiedzi:

16

Cztery sposoby:

Aby połączyć się tylko raz z systemem za pomocą nowego klucza hosta, bez konieczności odpowiadania na pytania, połącz się z następującą opcją:

ssh -q -o "StrictHostKeyChecking no" this.one.host.name

Aby trwale usunąć ostrzeżenie dla wszystkich systemów, edytuj ~/.ssh/configplik, aby dodać następujące wiersze:

Host *
StrictHostKeyChecking no

Aby trwale usunąć wszystkie ostrzeżenia dla tego jednego serwera, edytuj ~/.ssh/configplik i dodaj następujące wiersze:

Host this.one.hostname
StrictHostKeyChecking no  

Aby usunąć ostrzeżenie o tej jednej zmianie dla tego jednego serwera, usuń klucz hosta dla tego serwera z ~/.ssh/known_hosts. Przy następnym połączeniu zostanie dodany nowy klucz hosta.

Jenny D.
źródło
W drugiej opcji konfiguracja musi być wykonana po stronie serwera, z którą się łączymy?
coffeMug
Nie, to twój ma $HOME/.ssh/configznaczenie zarówno w drugiej, jak i trzeciej opcji.
Jenny D.
Nadal wyświetla mi to ostrzeżenie (chociaż umożliwia połączenie).
Michael Mior
24

Dodaj to do swojego ~ / .ssh / config:

Host 10.*                            # use your own pattern here, eg. *.example.com, example.*.com
  StrictHostKeyChecking   no         # turn off the HostKey check                                                               
  LogLevel                ERROR      # keep it from printing to STDOUT
  UserKnownHostsFile      /dev/null  # (optional) add the host automatically to a black hole, otherwise it would be added to ~/.ssh/known_hosts and show you a warning/message at the top of your session. You may want it added to known_hosts if your shell uses `ssh` autocompletion, such as fish. 
Elijah Lynn
źródło
3
MOD UP - tylko ten, który faktycznie odpowiedział na pytanie - to była jedyna odpowiedź na nie tylko pracę, ale WYŚWIETL OSTRZEŻENIA.
Brad
Ups, wygląda na to, że użytkownicy powłoki rybnej nie będą mogli użyć ładnego autouzupełniania ssh dla wcześniej połączonych hostów, jeśli ustawią UserKnownHostFile na / dev / null. Użytkownicy ryb i być może wszyscy nie powinni tego ustawiać.
Elijah Lynn
Lepiej stwórz ssh0skrypt / alias / funkcję ssh -o UserKnowHostsFile=/dev/null -o LogLevel=ERRORi używaj go wyraźnie zamiast wrzucać te opcje do ~/.ssh/config. Możesz o nich zapomnieć, a potem zastanawiać się, dlaczego czeki nie zadziałały, kiedy po prostu chciałeś, żeby działały.
Wujek Billy
20

Możesz usunąć linię dla tego hosta ~/.ssh/known_host(każdy host ma tam linię jako wpis).

Alternatywą jest użycie:

ssh -q -o "StrictHostKeyChecking no" ....

Samo użycie -qpo sshcichu zawiodłoby.

Timo
źródło
9

Czasem pożądane jest nie dodawanie kluczy hosta do domyślnego $ HOME / .ssh / known_hosts.

Użyj -o UserKnownHostsFile=/dev/nulloprócz -qi, -o StrictHostKeyChecking=noaby utrzymać znane hosty w porządku. Oto przykład:

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -q [email protected]
Mądry facet
źródło
2

Alternatywną sugestią jest ustalenie, dlaczego klucz hosta się zmienia, i spraw, aby przestał to robić.

Na przykład: jeśli budujesz hosty w kontenerach lub za pośrednictwem systemu udostępniania, upewnij się, że konsekwentnie korzystają z tego samego znanego klucza hosta na instancję.

Wiem, że nie zawsze jest to możliwe, a hostami można zarządzać poza zakresem kontroli, ale te ostrzeżenia dotyczące klucza hosta istnieją z jakiegoś powodu i są znaczące. Zmniejszenie liczby wyjątków to dobra rzecz.

W przeciwnym razie głosuję na StrictHostKeyChecking Nie w twoim tylko ~/.ssh/config dla konkretnego hosta, o którym mowa.

Dr Edward Morbius
źródło