Napisałem ten mały skrypt narzędziowy:
for h in $SERVER_LIST; do ssh $h "uptime"; done
Po dodaniu nowego serwera $SERVER_LIST
skrypt jest zatrzymywany za pomocą:
The authenticity of host 'blah.blah.blah (10.10.10.10)' can't be established.
RSA key fingerprint is a4:d9:a4:d9:a4:d9a4:d9:a4:d9a4:d9a4:d9a4:d9a4:d9a4:d9.
Are you sure you want to continue connecting (yes/no)?
Próbowałem yes
:
for h in $SERVER_LIST; do yes | ssh $h "uptime"; done
bez powodzenia.
Czy istnieje sposób na parametryzację, ssh
aby automatycznie akceptować nowy klucz?
yes
wypisuje „y”, być może powinieneś mieć więcej szczęściafor h in $SERVER_LIST; do yes yes | ssh $h "uptime"; done
(zwróć uwagę na dodatkowe tak, które mówi tak, co powiedzieć zamiast „y” „).Odpowiedzi:
Użyj opcji StrictHostKeyChecking, na przykład:
Tę opcję można również dodać do ~ / .ssh / config, np .:
Pamiętaj, że po zmianie kluczy hosta otrzymasz ostrzeżenie, nawet z tą opcją:
Jeśli hosty nie są często instalowane ponownie, możesz uczynić to mniej bezpiecznym (ale wygodniejszym dla często zmieniających się kluczy hosta) za pomocą tej
-oUserKnownHostsFile=/dev/null
opcji. Spowoduje to odrzucenie wszystkich odebranych kluczy hosta, więc nigdy nie wygeneruje ostrzeżenia.Z 18.04, nowe możliwości:
StrictHostKeyChecking=accept-new
. Odman 5 ssh_config
:źródło
ssh-keyscan
jest preferowane, jeśli jest dostępne w twoim systemie.ssh-keyscan
Podejście do przyjmowania nowych kluczy do stałych hostów jest bardziej rozsądne. W przypadku lokalnych maszyn wirtualnych i innych hostów w zaufanych sieciach z dynamicznymi / ponownie wykorzystywanymi adresami IP opisane podejście jest wystarczająco dobre.ssh-keyscan
Rozwiązanie jest podatne tylko na atak typu man-in-the-middle za jednym razemssh-keyscan
.-oStrictHostKeyChecking=no
Rozwiązaniem jest podatny na atak typu man-in-the-middle każdym razemssh
uruchomionego.Możesz użyć następującego polecenia, aby dodać odcisk palca dla serwera do znanych_hostów
UWAGA: Zamień <adres ip> i <nazwa hosta> na adres IP i dns serwera, który chcesz dodać.
Jedyny problem polega na tym, że niektóre serwery na twoich znanych serwerach kończą się dwa razy. To naprawdę nie jest wielka sprawa, tylko wspomnę. Aby upewnić się, że nie ma duplikatów, możesz najpierw usunąć wszystkie serwery, uruchamiając najpierw następujące:
Abyś mógł uruchomić:
Jedną rzeczą, o której należy pamiętać przy usuwaniu tylko w celu ponownego dodania, jest zasadniczo usunięcie bezpieczeństwa weryfikacji odcisku palca. Dlatego zdecydowanie nie chcesz uruchamiać tego skryptu przed każdym uruchomieniem skryptu narzędziowego.
źródło
-H
haszy nazwy hostów i adresy.Trochę się spóźniłem z tą odpowiedzią, ale rozsądnym sposobem byłoby zrobienie ssh-keycan na nowej maszynie przed uruchomieniem zbierania czasu pracy.
Wyłączenie kontroli poczytalności dla wygody brzmi jak zły plan, nawet jeśli uważasz, że masz całkowitą kontrolę nad środowiskiem.
źródło
StrictHostKeyChecking no
Aby automatycznie dodać listę serwerów, możemy zrobić poniżej:
Dodaj IP serwerów na liście serwerów plików
Adresy IP należy dodać w poniższym formacie.
Wyjście z
cat servers-list
Zmień powyższe adresy IP, zastępując swoje.
Poniższe polecenie doda wszystkie serwery z listy.
źródło