Jak mogę uniknąć weryfikacji hosta SSH dla znanych hostów?

169

Za każdym razem, gdy próbuję połączyć się z serwerem za pomocą SSH, pojawia się następujący monit. Piszę „tak”, ale czy można temu zaradzić?

The authenticity of host '111.222.333.444 (111.222.333.444)' can't be established.
RSA key fingerprint is f3:cf:58:ae:71:0b:c8:04:6f:34:a3:b2:e4:1e:0c:8b.
Are you sure you want to continue connecting (yes/no)? 
shantanuo
źródło
7
/ dev / null istnieje dla tych, którzy myślą, że są odporni na ataki człowieka w środku :)
Tim Post
1
Najgorsza część: Wpisz, yaby zaoszczędzić trochę czasu i narzeka: Please type 'yes' or 'no': (
hmph

Odpowiedzi:

234

Użyj -oopcji,

ssh -o "StrictHostKeyChecking no" user@host
maniak
źródło
1
Możesz użyć alternatywnego pliku tożsamości z flagą „-i”
MUY Belgia
Jakie byłoby zastosowanie alternatywnego pliku tożsamości? Chodzi mi o to, że jeśli łączysz się z zainfekowanym hostem, jaka to różnica ma wpływ na sposób uwierzytelnienia - to nie tak, że zainfekowany host może również ukraść Twój klucz.
Dagelf
102

Dodaj następujące wiersze na początku /etc/ssh/ssh_config...

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

Opcje:

  • Podsieć hosta może *umożliwiać nieograniczony dostęp do wszystkich adresów IP.
  • Edycja /etc/ssh/ssh_configdo konfiguracji globalnej lub ~/.ssh/configkonfiguracji specyficznej dla użytkownika.

Zobacz http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html

JimFred
źródło
2
Szkoda, że ​​mogę cię głosować tylko raz. Ustawienie Znanych hostów na / dev / null jest genialne.
J0hnG4lt
1
Twój najmądrzejszy.
Darth Egregious
30
Ha! Powiedz mojej żonie.
JimFred,
30

Powinieneś to uzyskać tylko przy pierwszym połączeniu z nowym hostem. Po udzieleniu odpowiedzi yeshost zostanie zapisany ~/.ssh/known_hostsi przy następnym połączeniu nie pojawi się monit.

Pamiętaj, że jeśli ~/.ssh/known_hostsnie można tego napisać z jakiegokolwiek powodu (np. Problem z uprawnieniami), będziesz monitowany przy każdym połączeniu.

Paul R.
źródło
6
Pytanie czy w ogóle można uniknąć pytania?
shantanuo
Próbowałem dodać „CheckHostIP no” do pliku / etc / ssh / ssh_config. Ale to nie wydaje się działać
shantanuo
2
sudo chown -R użytkownik: użytkownik .ssh; sudo chmod 700 .ssh; sudo chmod -R 600 .ssh /; ssh-keygen -R $ nazwa_hosta i podłącz ponownie, które powinny usunąć WSZYSTKIE problemy i TYLKO zawsze ponownie pytać, jeśli ssk_Hostkey jest zmutowany | zmieniłeś się lub jesteś ofiarą MITM.
linuxdev2013,
1
mówi „za każdym razem”, więc ta odpowiedź jest bardzo odpowiednia
tarikakyol
11

Najlepszym sposobem (ponieważ nie oznacza to utraty bezpieczeństwa) jest jednokrotne połączenie się ze wszystkimi komputerami z jednego klienta (za każdym razem pojawi się monit, zawsze odpowiedz „tak”). Jak wskazano w drugiej odpowiedzi, klucze zostaną następnie zapisane w ~ / .ssh / known_hosts. Następnie skopiuj ten plik na każdy komputer kliencki, z którego możesz później połączyć się (być może dla każdego konta użytkownika, którego używasz). Wtedy wszystkie te konta „poznają” komputery, dlatego nie są wyświetlane monity.

Zaletą w porównaniu z wyłączeniem monitu jest to, że SSH może faktycznie sprawdzić, czy istnieje atak MITM.

Śleske
źródło
1
Chociaż, jeśli często ssh za pośrednictwem połączeń przesyłania dalej, będziesz chciał dodać to do / etc / ssh / ssh_config: Host 127.0.0.1 NoHostAuthenticationForLocalhost tak
Dagelf
1

Jeśli chcesz wyłączyć potwierdzenie zamiast uwierzytelniania, możesz użyć opcji: „-o CheckHostIP = no”

ssh -i sergeys_rsa_key.pem -o CheckHostIP=no [email protected]
RJ
źródło
PO otrzymał już tę samą odpowiedź i zaakceptował ją.
Ayan,
0

Jest to prawdopodobnie spowodowane zmianą serwera kluczy ssh, ponieważ adres IP lub domena serwera są takie same, ale niezgodność klucza ssh.

Musisz usunąć zapisany klucz, /home/$user/.ssh/known_hostsaby uniknąć tej wiadomości.

Naprawiłem to, usuwając wszystkie klucze z tego pliku, więc dla tej nazwy domeny tworzony jest nowy token.

IvanReed
źródło
1
Klucz zmienił produkuje znacznie brzydsze wiadomość z pudełkiem i atsigns WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! i IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!we wszystkich kapitalizacji. Komunikat w pytaniu pojawia się tylko wtedy, gdy nie już wpis known_hosts.
dave_thompson_085
-1

Sprawdź uprawnienia do swojego ~/.ssh/known_hostspliku. Moje były nieprawidłowe, kiedy dostałem ten problem. Naprawiłem to za pomocą:

chmod 0600 ~/.ssh/known_hosts
Andrew McCombe
źródło