Moja firma wyłączyła uwierzytelnianie za pomocą klucza publicznego SSH, dlatego muszę wpisać ręcznie za każdym razem moje hasło (nie powinienem zmieniać /etc/ssh/sshd_config).

Jednak gssapi-keyex i uwierzytelnianie jest włączone (zobacz poniżej ssh wyjście debugowania).

Jak w takim przypadku mogę użyć automatycznego logowania?
Czy mogę wykorzystać gssapi-keyex i / lub gssapi-with-mic uwierzytelnienia?

> ssh -v -o PreferredAuthentications=publickey hostxx.domainxx OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Applying options for * debug1: Connecting to hostxx.domainxx [11.22.33.44] port 22. debug1: Connection established. debug1: identity file /home/me/.ssh/identity type -1 debug1: identity file /home/me/.ssh/id_rsa type -1 debug1: identity file /home/me/.ssh/id_dsa type 2 debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3 debug1: match: OpenSSH_5.3 pat OpenSSH* debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_5.3 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-ctr hmac-md5 none debug1: kex: client->server aes128-ctr hmac-md5 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY debug1: Host "hostxx.domainxx" is known and matches the RSA host key. debug1: Found key in /home/me/.ssh/known_hosts:2 debug1: ssh_rsa_verify: signature correct debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: gssapi-keyex,gssapi-with-mic,password debug1: No more authentication methods to try. Permission denied (gssapi-keyex,gssapi-with-mic,password). 

Komentarze

  • Python ' tkanina świetnie radzi sobie z automatyzacją ssh.
  • Cześć @ DanGarthwaite Czy używasz Fabric do ręcznego logowania się do innych zdalnych serwerów? Czy możesz wyjaśnić, jak go używasz. Proszę udzielić odpowiedzi. Pozdrawiam
  • Jeśli nie ' t w dziedzinie Kerberos (lub domeny Active Directory), to GSSAPI prawdopodobnie nie będzie dla Ciebie przydatny. To powiedziawszy, wyłączenie uwierzytelniania za pomocą klucza publicznego wydaje się dość absurdalne.
  • @olibre Fabric to narzędzie do uruchamiania poleceń na jednym lub wielu serwerach przez SSH. Te polecenia są zwykle zorganizowane w ” fabfile „, jak plik Makefile. Wykonuje niezwykle dobrą robotę, sprawiając, że SSH znika (po uwierzytelnieniu) i obsługuje wiele sposobów, w jakie klienci i serwery SSH mają tendencję do przerywania kontroli. Dostępny jest krótki samouczek: docs.fabfile.org/en/1.7/tutorial.html
  • Proszę @DanGarthwaite, czy możesz dać przykład pliku fab, który mógłby zalogować się na innym komputerze (SSH gssapi bez pytania o hasło) i otworzyć powłokę? Możesz podać to w odpowiedzi. (W ciągu pięciu minut nie znalazłem w samouczku, jak to zrobić). Pozdrawiam;)

Odpowiedz

Może.

  • Czy możesz otrzymać bilet dla jednostki głównej w systemie klienta w ramach standardowego procesu logowania lub ręcznie (kinit, MIT Kerberos dla Windows)?
  • Czy serwer ma jednostkę główną Kerberos, czy możesz ją podać? Powinien mieć postać host/[email protected].
  • Czy uwierzytelnianie GSSAPI jest włączone na Twoim kliencie?
  • Czy twój klient wie, do której dziedziny należy serwer na podstawie rekordu zasobu DNS TXT lub lokalnego mapowania?

Jeśli odpowiedziałeś „tak” na wszystkie z powyższych, a następnie gratulacje, możesz użyć GSSAPIAuthentication.

  • Możesz należy również włączyć delegowanie poświadczeń, w zależności od konfiguracji.

Kroki testowania:
(Zakładając: domain = example.com; realm = EXAMPLE.COM)

  1. kinit [email protected]
    • Najlepiej byłoby to zrobić w ramach standardowego procesu logowania, włączając pam_krb5 lub pam_sss (z auth_provider = krb5) w odpowiednim pam stack.
  2. kvno host/[email protected]
    • To jest krok debugowania. ssh robi to automatycznie, jeśli masz prawidłową pamięć podręczną i rozmawiasz z sshd, który obsługuje gssapi-with-mic lub gssapi-keyex.
  3. dig _kerberos.example.com txt powinien zwrócić "EXAMPLE.COM"
    • Alternatywnie odwzorowanie można zapisać w sekcji [domain_realm] /etc/krb5.conf jako .example.com = EXAMPLE.COM, ale metoda dns skaluje się znacznie lepiej.
  4. ssh -o GSSAPIAuthentication=yes [email protected]
    • Aby zalogować się na nazwę użytkownika inną niż nazwa twojego mocodawcy na serwerze, musisz wiedzieć, aby zmapować ją szczegóły, których tutaj nie dostaję.

Komentarze

  • Cześć. Dałem Ci +1 jakiś czas temu, ale w rzeczywistości nie wiem, jak sprawdzić cztery punkty. (nie jestem administratorem, tylko programistą). Czy możesz podać wiersz poleceń, aby sprawdzić połączenie SSH? g gssapiauthentication? Może mogę też użyć gssapiauthentication na moim komputerze z Linuksem. (czy w tym celu powinienem użyć kinit?) Pozdrawiam;)

Odpowiedź

Metoda 4-etapowa jest poprawna (w DNS są również rekordy Kerberos SRV, które są jeszcze bardziej eleganckie i są obecne w każdym Active Directory). Używam tego przez cały czas i opowiadam się za powyższymi metodami, głównie z powodów związanych z bezpieczeństwem i kontrolą.

To powiedziawszy, daje to tylko interaktywne logowanie, chociaż może to być quasi-interaktywne po otrzymaniu biletu na stację roboczą.Bilet Kerberos działa podobnie jak agent SSH; gdy już go masz, nowe połączenia są natychmiastowe i pozbawione hasła; aczkolwiek z ograniczeniem czasowym.

Aby uzyskać interaktywne logowanie wsadowe, musisz uzyskać plik keytab, plik, który zasadniczo zawiera hasło do konta Kerberos, podobnie jak prywatna połowa klucza SSH. Stosuje się odpowiednie środki ostrożności; zwłaszcza, że keytab nie jest szyfrowany ani chroniony hasłem.

Dość niechętnie udostępniam moim użytkownikom tabele kluczy do ich kont osobistych, ale agresywnie używam kont usług z minimalnymi uprawnieniami do różnych zadań wsadowych, zwłaszcza gdy krytyczne jest, aby poświadczenia były delegowane do zdalnego system, coś, czego pubkey po prostu nie może osiągnąć.

Keytabs mogą być tworzone przy użyciu programu ktutil w systemie Unix lub KTPASS.EXE w systemie Windows (ten ostatni z usług AD Kerberos). Zwróć uwagę, że ktutil istnieje w dwóch wersjach, Heimdal i MIT, a ich składnia jest inna. Czytanie strony podręcznika w odpowiednim systemie pomaga.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *