ssh -o PreferredAuthentications: Jaka jest różnica między „hasłem” a „interaktywną klawiaturą”?

36

Zarówno PreferredAuthentications=passwordi PreferredAuthentications=keyboard-interactivepoprosiłby o hasło, więc jaka jest między nimi różnica?

I Google przy słowach kluczowych ssh PreferredAuthentications hasło klawiatura interaktywna różnica, ale nie znalazłem odpowiedzi.

Jedyną różnicą, którą zauważyłem, jest ciąg znaków zachęty (w user@host's password:porównaniu Password:):

$ ssh -o PreferredAuthentications=password,keyboard-interactive my-host
root@my-host's password:
Password:
Permission denied (gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive).

AKTUALIZACJA (2018-04-09):

Dla łatwego odniesienia, poniższe informacje pochodzą z książki SSH: TDG, jak wspomniano w odpowiedzi jouella .

"keyboard-interactive"Uwierzytelnianie użytkownika ma na celu przede wszystkim PAMuwierzytelnianie po stronie serwera. Zapewnia wielokrotne okno dialogowe wyzwanie-odpowiedź z użytkownikiem, w którym serwer wysyła zapytanie tekstowe do użytkownika, użytkownik wpisuje odpowiedź, a proces ten może się powtarzać dowolną liczbę razy. Na przykład możesz skonfigurować PAMSSH z modułem, który wykonuje uwierzytelnianie przy użyciu tokena zabezpieczającego RSA lub schematu hasła jednorazowego . Ludzie są tym zdezorientowani, ponieważ domyślnie "keyboard-interactive"uwierzytelnianie zwykle implementuje uwierzytelnianie za pomocą hasła w jednym cyklu wyzwanie-odpowiedź, które tylko monituje o hasło, a zatem wygląda dokładnie tak samo jak"password"poświadczenie. Jeśli celowo nie używasz obu do różnych celów, możesz wyłączyć jedno lub drugie, aby uniknąć pomyłek użytkowników końcowych.

pynexj
źródło
1
Zobacz RFC 4252 dla autoryzacji hasła i RFC 4256 dla interaktywnej klawiatury .
pynexj

Odpowiedzi:

37

Protokół SSH ma wiele metod uwierzytelniania. Hasło i klawiatura interaktywne są dwa z nich.

Uwierzytelniania hasła jest prosta prośba dla pojedynczego hasła. Serwer nie wysyła żadnego konkretnego monitu. Więc jest to klient, która zdecyduje, jak oznaczyć prompt (The „user @ hasłem gospodarza” szybka jest z OpenSSH klientów , jak ssh, sftpitp).

Uwierzytelniania keyboard-interactive jest bardziej złożony wniosek o dowolnej liczby elementów informacji. Dla każdej informacji serwer wysyła etykietę monitu. Ponadto pozwala serwerowi na dostarczenie obszernego opisu ogólnej „formy”. Serwer może również określić, które dane wejściowe są tajne (należy je zaciemnić, gdy użytkownik je wpisuje), a które nie.

Chociaż w większości przypadków uwierzytelnianie interaktywne za pomocą klawiatury jest używane do żądania jednego „tajnego” monitu o hasło, więc nie ma prawie żadnej różnicy w uwierzytelnianiu hasła .

To różnica w stosunku do protokołu.


Z punktu widzenia implementacji, z serwerem OpenSSH, uwierzytelnianie interaktywne za pomocą klawiatury może być podpięte do uwierzytelniania dwuskładnikowego (lub wieloskładnikowego), np. Zapewnianego przez ogólny mechanizm PAM lub Kerberos .

Z perspektywy klienta inną różnicą jest lokalizacja. Dzięki uwierzytelnianiu za pomocą hasła klient może zlokalizować etykietę „Hasło” , ponieważ wie, że serwer prosi o hasło. Dzięki interaktywnemu uwierzytelnianiu za pomocą klawiatury , nawet gdy serwer prosi tylko o jedno hasło, klient nie może zlokalizować monitu (chyba że korzysta z AI), ponieważ jest to monit ogólny.

Martin Prikryl
źródło
2

Wiesz już, czym jest „hasło”. Z bardzo wysokiego poziomu (nie protokołu z poziomu cegieł), pomyśl o „interaktywnej klawiaturze” jako metodzie, w której używasz 2FA przy użyciu Radius i / lub SecurID itp. Zapewnia okna dialogowe z wyzwaniami i odpowiedziami: ssh.com ma niezłą krótki opis na ten temat. Idzie o krok dalej, aby podkreślić, że klawiatura-interaktywna to parasol, pod którym znajduje się hasło. Z szacunkiem dla autorów jest to trochę mylące.

Zobacz także definicję Snail Book . Używamy tego często w naszych urządzeniach chronionych przez RSA.

jouell
źródło