Jak pominąć pytanie „znane_host” przy pierwszym połączeniu z maszyną za pośrednictwem SSH z kluczami publicznymi / prywatnymi? [duplikować]

Odpowiedzi:

31

We wszystkich innych bieżących odpowiedziach brakuje UserKnownHostsFile = / dev / null

Jeśli po prostu chcesz to zrobić, możesz użyć:

ssh -o StrictHostKeychecking=no hostname

Jeśli chcesz to powtarzać, powinieneś dodać coś takiego jak poniżej do ~ / .ssh / config

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

Aby skonfigurować to na OpenSSH dla Windows po prostu wymienić /dev/nullsię NUL.

Dobre wyjaśnienie z: http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html

Jason Axelson
źródło
2
Od miesięcy poluję na filtrowanie podsieci (nie aktywnie), tego właśnie chciałem. Mamy małą sieć deweloperską z dhcp, a nasze urządzenia zawsze otrzymują nowy adres IP, co znacznie ułatwia łączenie się z nimi. Dzięki!
Adam Lewis,
13

Wyłącz StrictHostKeyCheckingza pomocą ssh_configopcji lub wiersza poleceń.

chaos
źródło
/ etc / ssh / ssh_config lub ~ / .ssh / config --- lub cokolwiek to jest w systemie Windows, jeśli jest to twoja platforma kliencka
Doug Harris,
3

Możesz uzyskać klucz publiczny, dodać go do pliku znane_hosty, a następnie ponownie go skasować:

ssh-keyscan -t rsa hostname >> .ssh/known_hosts
ssh-keygen -H
rm .ssh/known_hosts.old
egridasov
źródło
2
$ ssh -o StrictHostKeychecking=no hostname

Spowoduje to pominięcie kontroli i automatyczne dodanie klucza zdalnego hosta przy pierwszym logowaniu. (Istnieje również opcja CheckHostIP, ale wydaje się, że tak naprawdę nie wyłącza sprawdzania, czy klucz w ogóle istnieje).

Nelson
źródło
2
Lubię też używać UserKnownHostsFile, aby podpis nie został zapamiętany w moim systemie. ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeychecking=no hostname
Fajna
2

Zajęło mi to trochę czasu. Najczęstszym przykładem użycia, jaki widziałem, jest posiadanie tuneli ssh do zdalnych sieci. Wszystkie rozwiązania tutaj wytworzyły ostrzeżenia, które złamały moje skrypty (nagios).

Potrzebną opcją było:

NoHostAuthenticationForLocalhost yes

Co, jak sama nazwa wskazuje, dotyczy również lokalnego hosta.

richo
źródło
0

Możesz wyłączyć sprawdzanie, ale oczywiście jest to mniej bezpieczne. W idealnej sytuacji powinieneś zdobyć kogoś, kto już ma dostęp do komputera, aby pobrać jego publiczny klucz hosta i powiedzieć ssh, aby go używał. tj .: weź wynik:

cat /etc/ssh/ssh_host_rsa_key.pub

dodaj nazwę hosta komputera i dodaj tę linię do pliku ~ / .ssh / known_hosts na twoim komputerze. Skończysz z czymś, co wygląda:

myhost.example.com ssh-rsa AAAAB3Netc ...

Alternatywnie, jeśli chcesz po prostu pobrać odcisk palca klucza, co może być łatwiejsze do przesłania przez ograniczony kanał przepustowości (np. Rozmowę telefoniczną), możesz uruchomić pomocnika:

ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub

źródło
0

Jeśli chcesz tylko tymczasowo wyłączyć sprawdzanie hosta, aby na przykład zalogować się do systemu LiveCD, zmień nazwę ~/.ssh/known_hostsna inną, a następnie zmień ją ponownie po zakończeniu .

endolit
źródło
-2
  1. Dodaj „StrictHostKeyChecking no” do / etc / ssh / ssh_config
  2. cd ~ / .ssh
  3. rm znane_hosty
  4. ln -s / dev / null known_hosts

Bingo

Cliff Kennedy
źródło
1
Wiesz, przed jakim atakiem to pytanie ma zapobiec, prawda?
vonbrand,