Wyłącz interaktywne logowanie w skryptach bash [duplikat]

2

To pytanie ma już odpowiedź tutaj:

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.

Shahzada Hatim
źródło
Czy nie możesz po prostu zezwolić tylko PubkeyAuth w konfiguracji sshd na hoście?
ott--
nie, każda rzecz musi być w swoim rozkazie.
Shahzada Hatim
1
openssh ma dla tego tryb wsadowy: serverfault.com/questions/61915/…
ott--
openssh ma tryb wsadowy do tego: serverfault.com/questions/61915/…
ott--
@ott jako odpowiedź , a nie komentarz ...
Daniel Beck

Odpowiedzi:

4

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=yesustawienie 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.

tylko nikt
źródło