To pytanie ma już odpowiedź tutaj:
- SSH: całkowite wyłączenie uwierzytelniania hasła 3 odpowiedzi
Mam konfigurację uwierzytelniania opartą na kluczu SSH dla niektórych skryptów wdrażania. Istnieje jednak szansa, że w pewnym momencie pliki uwierzytelniające nie zostaną poprawnie skonfigurowane. Nie chcę, aby moje skrypty powłoki prosiły o hasła, chcę, aby natychmiast zawiodły.
Za pomocą
ssh -o KbdInteractiveAuthentication = nie -o HasłoAuthentication = nie -o PubkeyAuthentication = tak test @ host
lub coś w tym stylu nie działa. Nie chcę zmieniać plików konfiguracyjnych, ponieważ skrypt można wykonać z dowolnego miejsca.
Odpowiedzi:
Właśnie miałem ten problem i znalazłem odpowiedź tutaj:
http://www.gossamer-threads.com/lists/openssh/dev/47179
Zasadniczo openssh używał interaktywnej klawiatury do implementacji wyzwania-repsonse. Więc jeśli jedna z tych opcji jest ustawiona na „tak”, wówczas klawiatura-interaktywna zostaje ustawiona na „tak” w kodzie. Musisz ustawić oba na „nie”, aby uzyskać pożądane zachowanie.
Musiałem zrobić:
ssh -o PasswordAuthentication=no -o KbdInteractiveAuthentication=no -o ChallengeResponseAuthentication=no
Oczywiście to
BatchMode=yes
ustawienie zająłoby się nimi wszystkimi i zapewniłoby w przyszłości ochronę przed wszelkimi nowymi interaktywnymi metodami uwierzytelniania użytkowników w przyszłości.źródło