Rozwiązywanie problemów z uwierzytelnianiem usługi Active Directory dla programu SQL Server w systemie Linux i kontenerach

Dotyczy:Program SQL Server w systemie Linux

Ten artykuł ułatwia rozwiązywanie problemów z uwierzytelnianiem usług Active Directory Domain Services w programie SQL Server w systemie Linux i kontenerach. Zawiera on testy wymagań wstępnych i porady dotyczące pomyślnej konfiguracji usługi Active Directory oraz listę typowych błędów i kroków rozwiązywania problemów.

Weryfikowanie bieżącej konfiguracji

Zanim zaczniesz rozwiązywać problemy, zweryfikowaj aktualnego użytkownika, mssql.conf, nazwę podmiotu usługowego (SPN) oraz ustawienia realm.

  1. Uzyskaj lub przedłuż Kerberos TGT (bilet przyznający bilet) za pomocą kinit:

    kinit privilegeduser@CONTOSO.COM
    
  2. Uruchom następujące polecenie i upewnij się, że użytkownik wykonujący je ma dostęp do :mssql.keytab

    /opt/mssql/bin/mssql-conf validate-ad-config /var/opt/mssql/secrets/mssql.keytab
    

    Aby uzyskać więcej informacji o validate-ad-config poleceniu, użyj ./opt/mssql/bin/mssql-conf validate-ad-config --help

Wyszukiwania DNS i odwrotne wyszukiwania DNS

  1. Wyszukiwania DNS w nazwie domeny i nazwie NetBIOS powinny zwrócić ten sam adres IP, który zwykle jest zgodny z adresem IP kontrolera domeny (DC). Uruchom te polecenia z maszyny hosta programu SQL Server.

    nslookup contoso
    nslookup contoso.com
    

    Jeśli adresy IP nie są zgodne, zobacz Dołączanie programu SQL Server na hoście z systemem Linux do domeny usługi Active Directory, aby naprawić odwołania DNS i komunikację z kontrolerem domeny.

  2. Wykonaj odwrotne wyszukiwanie DNS (rDNS) dla każdego adresu IP na podstawie poprzednich wyników. Uwzględnij adresy IPv4 i IPv6, jeśli to możliwe.

    nslookup <IPs returned from the above commands>
    

    Wszyscy powinni zwrócić <hostname>.contoso.com. W przeciwnym razie sprawdź rekordy PTR (wskaźnik) w Active Directory.

    Może być konieczne współdziałanie z administratorem domeny w celu umożliwienia działania rDNS. Jeśli nie możesz dodać wpisów PTR dla wszystkich zwróconych adresów IP, możesz też ograniczyć SQL Server do podzbioru kontrolerów domeny. Ta zmiana ma wpływ na wszelkie inne usługi korzystające z krb5.conf na hoście.

    Aby uzyskać więcej informacji na temat odwrotnego systemu DNS, zobacz Co to jest odwrotny system DNS?

Sprawdź plik keytab i uprawnienia

  1. Sprawdź, czy utworzyłeś plik keytab (tabela kluczy) i czy ustawiłeś użycie mssql-conf odpowiedniego pliku z odpowiednimi uprawnieniami. Keytab musi być dostępny dla konta użytkownika mssql. Aby uzyskać więcej informacji, zobacz Jak użyć adutil do konfiguracji uwierzytelniania Active Directory w SQL Server na Linux.

  2. Upewnij się, że możesz wyświetlić listę zawartości keytabu i że dodano poprawne SPN-y, port, typ szyfrowania i konto użytkownika. Jeśli nie wpiszesz haseł poprawnie podczas tworzenia SPN-ów i wpisów w zakładkach klawiszy, napotykasz błędy podczas próby logowania się za pomocą uwierzytelniania Active Directory.

    klist -kte /var/opt/mssql/secrets/mssql.keytab
    

    Poniżej przedstawiono przykładowy działający keytab. W przykładzie użyto dwóch typów szyfrowania, ale można użyć tylko jednego lub kilku typów szyfrowania obsługiwanych w danym środowisku. W tym przykładzie sqluser@CONTOSO.COM jest kontem uprzywilejowanym (co odpowiada ustawieniu network.privilegedadaccount w mssql-conf), a nazwa hosta serwera SQL Server to sqllinux.contoso.com, który nasłuchuje na domyślnym porcie 1433.

    $ kinit privilegeduser@CONTOSO.COM
    Password for privilegeduser@CONTOSO.COM:
    
    $ klist
    
    Ticket cache: FILE:/tmp/krb5cc_1000
    Default principal: privilegeduser@CONTOSO.COM
    Valid starting     Expires            Service principal
    01/26/22 20:42:02  01/27/22 06:42:02  krbtgt/CONTOSO.COM@CONTOSO.COM
        renew until 01/27/22 20:41:57
    
    $ klist -kte /var/opt/mssql/secrets/mssql.keytab
    
    Keytab name: FILE:/var/opt/mssql/secrets/mssql.keytab
    KVNO Timestamp         Principal
    ---- ----------------- --------------------------------------------------------
       2 01/13/22 13:19:47 MSSQLSvc/sqllinux@CONTOSO.COM (aes256-cts-hmac-sha1-96)
       2 01/13/22 13:19:47 MSSQLSvc/sqllinux@CONTOSO.COM (aes128-cts-hmac-sha1-96)
       2 01/13/22 13:19:47 MSSQLSvc/sqllinux.contoso.com@CONTOSO.COM (aes256-cts-hmac-sha1-96)
       2 01/13/22 13:19:47 MSSQLSvc/sqllinux.contoso.com@CONTOSO.COM (aes128-cts-hmac-sha1-96)
       2 01/13/22 13:19:47 MSSQLSvc/sqllinux:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96)
       2 01/13/22 13:19:47 MSSQLSvc/sqllinux:1433@CONTOSO.COM (aes128-cts-hmac-sha1-96)
       2 01/13/22 13:19:47 MSSQLSvc/sqllinux.contoso.com:5533@CONTOSO.COM (aes256-cts-hmac-sha1-96)
       2 01/13/22 13:19:47 MSSQLSvc/sqllinux.contoso.com:5533@CONTOSO.COM (aes128-cts-hmac-sha1-96)
       2 01/13/22 13:19:55 sqluser@CONTOSO.COM (aes256-cts-hmac-sha1-96)
       2 01/13/22 13:19:55 sqluser@CONTOSO.COM (aes128-cts-hmac-sha1-96)
    

Zweryfikuj informacje o obszarze w krb5.conf

  1. W krb5.conf (znajdującym się w /etc/krb5.conf) sprawdź, czy podajesz wartości domyślnego obszaru, informacji o obszarze i domenie do mapowania obszaru. Przejrzyj poniższy przykładowy krb5.conf plik. Aby uzyskać więcej informacji, zobacz Omówienie uwierzytelniania usługi Active Directory dla programu SQL Server w systemie Linux i kontenerach.

    [libdefaults]
    default_realm = CONTOSO.COM
    default_keytab_name = /var/opt/mssql/secrets/mssql.keytab
    default_ccache_name = ""
    
    [realms]
    CONTOSO.COM = {
        kdc = adVM.contoso.com
        admin_server = adVM.contoso.com
        default_domain= contoso.com
    }
    
    [domain_realm]
    .contoso.com = CONTOSO.COM
    contoso.com = CONTOSO.COM
    
  2. Można ograniczyć program SQL Server do kontaktu z podzbiorem kontrolerów domeny, co jest przydatne, jeśli konfiguracja DNS zwraca więcej kontrolerów domeny niż program SQL Server musi się skontaktować. SQL Server on Linux pozwala określić listę kontrolerów domeny, z którymi SQL Server kontaktuje się w trybie round-robin podczas wyszukiwania Lightweight Directory Access Protocol (LDAP).

    Wykonaj te dwa kroki. Najpierw zmodyfikuj krb5.conf je, dodając potrzebne kontrolery domeny, z przedrostkiem kdc =.

    [realms]
    CONTOSO.COM = {
      kdc = kdc1.contoso.com
      kdc = kdc2.contoso.com
      ..
      ..
    }
    

    Plik krb5.conf jest powszechnym konfiguracyjnym pliku klienta Kerberos, więc wszelkie zmiany wprowadzone w tym pliku dotyczą innych usług oprócz SQL Server. Przed wprowadzeniem jakichkolwiek zmian skonsultuj się ze swoim administratorem domeny.

    Włącz ustawienie network.enablekdcfromkrb5conf z , mssql-confa następnie zrestartuj SQL Server:

    sudo /opt/mssql/bin/mssql-conf set network.enablekdcfromkrb5conf true
    sudo systemctl restart mssql-server
    

Rozwiązywanie problemów z protokołem Kerberos

Poniższe szczegóły pomogą Ci rozwiązywać problemy z uwierzytelnianiem Active Directory oraz identyfikować konkretne komunikaty o błędach.

Śledź Kerberos

Po utworzeniu użytkownika, SPN-ów i kart klawiszy oraz skonfigurowaniumssql-conf, zweryfikowaj konfigurację Active Directory.

Aby zweryfikować konfigurację SQL Server on Linux, użyj konta uprzywilejowanego do uzyskania lub odnowienia Kerberos TGT. Wykonaj to polecenie, aby wyświetlić komunikaty śledzenia Kerberosa w konsoli (stdout):

root@sqllinux mssql# KRB5_TRACE=/dev/stdout kinit -kt /var/opt/mssql/secrets/mssql.keytab sqluser

Jeśli nie ma żadnych problemów, powinny zostać wyświetlone dane wyjściowe podobne do poniższego przykładu. Jeśli nie, ślad daje kontekst dotyczący kroków, które należy przejrzeć.

3791545 1640722276.100275: Getting initial credentials for sqluser@CONTOSO.COM
3791545 1640722276.100276: Looked up etypes in keytab: aes256-cts, aes128-cts
3791545 1640722276.100278: Sending unauthenticated request
3791545 1640722276.100279: Sending request (202 bytes) to CONTOSO.COM
3791545 1640722276.100280: Initiating TCP connection to stream 10.0.0.4:88
3791545 1640722276.100281: Sending TCP request to stream 10.0.0.4:88
3791545 1640722276.100282: Received answer (185 bytes) from stream 10.0.0.4:88
3791545 1640722276.100283: Terminating TCP connection to stream 10.0.0.4:88
3791545 1640722276.100284: Response was from master KDC
3791545 1640722276.100285: Received error from KDC: -1765328359/Additional pre-authentication required
3791545 1640722276.100288: Preauthenticating using KDC method data
3791545 1640722276.100289: Processing preauth types: PA-PK-AS-REQ (16), PA-PK-AS-REP_OLD (15), PA-ETYPE-INFO2 (19), PA-ENC-TIMESTAMP (2)
3791545 1640722276.100290: Selected etype info: etype aes256-cts, salt "CONTOSO.COMsqluser", params ""
3791545 1640722276.100291: Retrieving sqluser@CONTOSO.COM from /var/opt/mssql/secrets/mssql.keytab (vno 0, enctype aes256-cts) with result: 0/Success
3791545 1640722276.100292: AS key obtained for encrypted timestamp: aes256-cts/E84B
3791545 1640722276.100294: Encrypted timestamp (for 1640722276.700930): plain 301AA011180F32303231313XXXXXXXXXXXXXXXXXXXXXXXXXXXXX, encrypted 333109B95898D1B4FC1837DAE3E4CBD33AF8XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
3791545 1640722276.100295: Preauth module encrypted_timestamp (2) (real) returned: 0/Success
3791545 1640722276.100296: Produced preauth for next request: PA-ENC-TIMESTAMP (2)
3791545 1640722276.100297: Sending request (282 bytes) to CONTOSO.COM
3791545 1640722276.100298: Initiating TCP connection to stream 10.0.0.4:88
3791545 1640722276.100299: Sending TCP request to stream 10.0.0.4:88
3791545 1640722276.100300: Received answer (1604 bytes) from stream 10.0.0.4:88
3791545 1640722276.100301: Terminating TCP connection to stream 10.0.0.4:88
3791545 1640722276.100302: Response was from master KDC
3791545 1640722276.100303: Processing preauth types: PA-ETYPE-INFO2 (19)
3791545 1640722276.100304: Selected etype info: etype aes256-cts, salt "CONTOSO.COMsqluser", params ""
3791545 1640722276.100305: Produced preauth for next request: (empty)
3791545 1640722276.100306: AS key determined by preauth: aes256-cts/E84B
3791545 1640722276.100307: Decrypted AS reply; session key is: aes256-cts/05C0
3791545 1640722276.100308: FAST negotiation: unavailable
3791545 1640722276.100309: Initializing KCM:0:37337 with default princ sqluser@CONTOSO.COM
3791545 1640722276.100310: Storing sqluser@CONTOSO.COM -> krbtgt/CONTOSO.COM@CONTOSO.COM in KCM:0:37337
3791545 1640722276.100311: Storing config in KCM:0:37337 for krbtgt/CONTOSO.COM@CONTOSO.COM: pa_type: 2
3791545 1640722276.100312: Storing sqluser@CONTOSO.COM -> krb5_ccache_conf_data/pa_type/krbtgt/CONTOSO.COM@CONTOSO.COM@X-CACHECONF: in KCM:0:37337

$ sudo klist
Ticket cache: KCM:0:37337
Default principal: sqluser@CONTOSO.COM
Valid starting Expires Service principal
12/28/2021 20:11:16 12/29/2021 06:11:16 krbtgt/CONTOSO.COM@CONTOSO.COM
renew until 01/04/2022 20:11:16

Włącz rejestrowanie protokołu Kerberos i rejestrowanie PAL oparte na zabezpieczeniach.

Aby zidentyfikować konkretne komunikaty o błędach w PAL (Platform Abstraction Layer), włącz security.kerberos i security.ldap logowanie. Utwórz logger.ini plik z następującą zawartością w , /var/opt/mssql/a następnie zrestartuj SQL Server, aby wychwycić wszelkie błędy inicjalizacyjne. Odtworzyć porażkę. PAL rejestruje błędy i komunikaty debugowania Active Directory do /var/opt/mssql/log/security.log.

[Output:security]
Type = File
Filename = /var/opt/mssql/log/security.log
[Logger]
Level = Silent
[Logger:security.kerberos]
Level = Debug
Outputs = security
[Logger:security.ldap]
Level = Debug
Outputs = security

SQL Server wykrywa zmiany w loggerze bez logger.ini restartu, ale awarie podczas inicjalizacji usługi Active Directory przy starcie SQL Server pozostają niezauważone. Restart SQL Server rejestruje wszystkie komunikaty o błędach.

Dziennik zabezpieczeń będzie nadal zapisywany na dysku, dopóki nie usuniesz zmian w logger.ini. Wyłącz security.kerberos logowanie, security.ldap gdy zidentyfikujesz i rozwiążesz problem, aby zapobiec braku miejsca na dysku.

Rejestrator PAL generuje pliki dziennika w następującym formacie:

<DATETIME> <Log level> [<logger>] <<process/thread identifier>> <message>

Na przykład przykładowy wiersz z dziennika jest następujący:

12/28/2021 13:56:31.609453055 Error [security.kerberos] <0003753757/0x00000324> Request ticket server MSSQLSvc/sql.contoso.com:1433@CONTOSO.COM kvno 3 enctype aes256-cts found in keytab but cannot decrypt ticket

Po włączeniu logowania PAL i odtworzeniu problemu poszukaj pierwszej wiadomości z poziomem logu .Error Użyj poniższej tabeli, aby znaleźć błąd i postępować zgodnie z wytycznymi oraz zaleceniami, aby rozwiązać problem.

Typowe komunikaty o błędach

Komunikat o błędzie: "Logowanie nie powiodło się. Logowanie pochodzi z nieufnej domeny i nie można go używać z uwierzytelnianiem zintegrowanym"

Możliwa przyczyna

Pojawia się ten błąd, gdy próbujesz zalogować się kontem Active Directory po skonfigurowaniu uwierzytelniania Active Directory.

Guidance

Ten ogólny komunikat o błędzie wymaga aby włączyć rejestrowanie PAL w celu zidentyfikowania określonego błędu.

Zobacz poniższą listę typowych błędów, aby określić możliwą przyczynę każdego z nich, a następnie postępuj zgodnie z instrukcjami dotyczącymi rozwiązywania problemu.

Komunikaty o błędach
nie można odnaleźć użytkownika lub grupy systemu Windows NT "CONTOSO\user"
Nie można wyszukać krótkiej nazwy domeny z powodu błędu
Nie można wykonać wyszukiwania rDNS dla nazwy hosta <hosta> z powodu błędu
Nazwa FQDN nie jest zwracana przez zapytanie rDNS
nie można powiązać z serwerem LDAP
Nie znaleziono pozycji w tabeli o kluczu
< >
żądanie biletu na serwerze <główny> nie znaleziono w karcie kluczy (ticket kvno <KVNO>)
Żądanie serwera biletów <podmiot zabezpieczeń> kvno <> KVNO znalezionych na karcie kluczy, ale nie w przypadku typu szyfrowania <typu>
Serwer zgłoszeń <użytkownik> kvno <KVNO> enctype <typu szyfrowania> znalezionego na karcie kluczy, ale nie można odszyfrować biletu

Komunikat o błędzie: Nie znaleziono użytkownika lub grupy systemu Windows NT "CONTOSO\user"

Możliwa przyczyna

Ten błąd może wystąpić podczas próby utworzenia logowania systemu Windows lub podczas odświeżania grupy .

Guidance

Aby zweryfikować problem, postępuj zgodnie z wytycznymi "Logowanie się nie powiodło. Identyfikator logowania pochodzi z niezaufanej domeny i nie można go używać z uwierzytelnianiem zintegrowanym. (Microsoft SQL Server, Błąd: 18452)" oraz włącz logowanie PAL, aby zidentyfikować konkretny błąd i odpowiednio rozwiązać problem.

Komunikat o błędzie: "Nie można wyszukać krótkiej nazwy domeny z powodu błędu"

Możliwa przyczyna

Składnia Transact-SQL do utworzenia logowania do usługi Active Directory to:

CREATE LOGIN [CONTOSO\user]
    FROM WINDOWS;

W poleceniu wymagana jest nazwa NetBIOS (CONTOSO), ale w backendzie podczas połączenia LDAP musi być podana domena () FQDNcontoso.com. Aby wykonać tę konwersję, wykonywane jest wyszukiwanie DNS na CONTOSO, aby rozpoznać adres IP kontrolera domeny, który następnie może być użyty do zapytań LDAP.

Guidance

Komunikat o błędzie "Nie udało się wyszukać krótkiej nazwy domeny z powodu błędu" sugeruje, że nslookup for contoso nie rozwiązuje się na adres IP kontrolera domeny. Przejrzyj wyszukiwania DNS i odwrotne DNS , aby upewnić się, że nslookup zarówno NetBIOS, jak i domena się zgadzają.

Komunikaty o błędach: "Nie można wykonać wyszukiwania rDNS dla hosta <nazwa hosta> z powodu błędu" lub "Nazwa FQDN nie jest zwracana przez wyszukiwanie rDNS"

Możliwa przyczyna

Te komunikaty o błędach zazwyczaj wskazują, że rekordy odwróconego DNS (rekordy PTR) nie istnieją dla wszystkich kontrolerów domeny.

Guidance

Sprawdź dns i wsteczne wyszukiwania DNS. Po zidentyfikowaniu kontrolerów domeny, które nie mają wpisów rDNS, masz dwie opcje:

  • Dodaj wpisy rDNS dla wszystkich kontrolerów domeny

    To ustawienie nie jest ustawieniem SQL Server i musisz je skonfigurować na poziomie domeny. Możesz musieć współpracować z zespołem administracji domeny, aby stworzyć wymagane rekordy PTR dla wszystkich kontrolerów domeny, które zwracają nslookup dane dane domeny.

  • ogranicz program SQL Server do podzbioru kontrolerów domeny

    Jeśli nie możesz dodać rekordów PTR dla wszystkich zwróconych kontrolerów domeny, możesz ograniczyć SQL Server do podzbioru kontrolerów domeny.

Komunikat o błędzie: "Nie można powiązać z serwerem LDAP ldap://CONTOSO.COM:3268: Błąd lokalny"

Możliwa przyczyna

Ten ogólny błąd z openLDAP zwykle oznacza jedną z dwóch rzeczy:

  • Brak poświadczeń
  • Problemy z siecią rDNS

Oto przykład komunikatu o błędzie:

12/09/2021 14:32:11.319933684 Error [security.ldap] <0000000142/0x000001c0> Failed to bind to LDAP server ldap://[CONTOSO.COM:3268]: Local error

Guidance

  • Brak poświadczeń

    Inne komunikaty o błędach pojawiają się jako pierwsze, jeśli dane uwierzytelniające nie są ładowane dla połączeń LDAP. Włącz logowanie PAL i sprawdź log błędów pod kątem komunikatów o błędach przed tym zadaniem. Jeśli nie ma żadnych innych błędów, najprawdopodobniej nie występuje problem z poświadczeniami. Jeśli znajdziesz błąd, popraw go przed przejściem dalej. W większości przypadków jest to jeden z komunikatów o błędach, które omawia ten artykuł.

  • problemy z siecią rDNS

    Sprawdź dns i wsteczne wyszukiwania DNS.

    Gdy biblioteka OpenLDAP łączy się z kontrolerem domeny, dostarcza albo w pełni kwalifikowaną nazwę domeny (FQDN), która w tym przykładzie to contoso.com, lub FQDNkdc1.contoso.com (DC). Po nawiązaniu połączenia (ale przed zwróceniem sukcesu dzwoniącemu), biblioteka OpenLDAP sprawdza adres IP serwera, do którego się połączyła. Następnie wykonuje odwrotne wyszukiwanie DNS i sprawdza, czy nazwa serwera, do którego się połączyło (kdc1.contoso.com) zgadza się z żądaną domeną (contoso.com). Jeśli nie jest ona zgodna, biblioteka OpenLDAP zakończy połączenie jako funkcja zabezpieczeń. To niedopasowanie jest częścią powodu, dla którego ustawienia rDNS są ważne dla SQL Server on Linux i są tematem tego artykułu.

Komunikat o błędzie: "Nie znaleziono wpisu w tabeli z kluczami"

Możliwa przyczyna

Ten błąd wskazuje na problemy z dostępem do pliku z kartką klawiszy lub brakujące wpisy w zakładce klawiszy.

Guidance

Upewnij się, że plik keytab ma prawidłowy poziom dostępu i uprawnienia. Domyślna lokalizacja i nazwa pliku keytab to /var/opt/mssql/secrets/mssql.keytab. Aby zobaczyć aktualne uprawnienia wszystkich plików w folderze secrets, wykonaj następujące polecenie:

sudo ls -lrt /var/opt/mssql/secrets

Użyj tych poleceń, aby ustawić uprawnienia i poziom dostępu w pliku keytab:

sudo chown mssql /var/opt/mssql/secrets/mssql.keytab
sudo chmod 440 /var/opt/mssql/secrets/mssql.keytab

Aby uzyskać więcej informacji na temat wyświetlania wpisów w pliku keytab i ustawiania odpowiednich uprawnień, zobacz poprzednią sekcję Sprawdź plik keytab i uprawnienia. Jeśli nie spełniasz żadnego z warunków w tej sekcji, zobaczysz ten błąd lub równoważny błąd: "Key table entry not found".

Komunikat o błędzie: "Nie znaleziono wpisu w tabeli kluczy dla głównego podmiotu <>"

Możliwa przyczyna

Gdy próbujesz odzyskać dane poświadczenia z <principal> karty klawiszy, nie znajdziesz żadnych odpowiednich wpisów.

Guidance

Aby wyświetlić listę wszystkich wpisów w pliku keytab, zobacz sekcję Sprawdź plik keytab i uprawnienia tego artykułu. Upewnij się, że <principal> jest obecny. W takim przypadku konto główne to zazwyczaj to, network.privilegedadaccount na które rejestrujesz SPN. Jeśli nie, dodaj to razem z adutil poleceniem. Aby uzyskać więcej informacji, zobacz Jak użyć adutil do konfiguracji uwierzytelniania Active Directory w SQL Server na Linux.

Komunikat o błędzie: "Bilet żądania serwera <główna nazwa> nie został znaleziony w karcie kluczy (bilet kvno <KVNO>)"

Możliwa przyczyna

Ten błąd oznacza, że SQL Server nie może znaleźć wpisu w zakładce klawiszy dla żądanego zgłoszenia z podanym numerem wersji klucza (KVNO).

Guidance

Aby wyświetlić listę wszystkich wpisów w pliku keytab, zobacz sekcję Sprawdź plik keytab i uprawnienia tego artykułu. Jeśli nie znajdziesz komunikatu o błędzie odpowiadającym KVNO i <principal> KVNO, zaktualizuj plik keytab, aby dodać ten wpis, postępując zgodnie z krokami w tej sekcji.

Możesz również uruchomić następujące polecenie, aby uzyskać najnowszy numer KVNO z kontrolera domeny. Zanim wykonasz to polecenie, pobierz lub odnow Kerberos TGT za pomocą kinit tego polecenia. Aby uzyskać więcej informacji, zobacz , jak użyć adutil do utworzenia użytkownika Active Directory dla SQL Server i ustawienia nazwy głównej usługi (SPN).

kvno MSSQLSvc/<hostname>

Komunikat o błędzie: "Żądanie serwera biletów <podmiotu zabezpieczeń> kvno <KVNO> znalezione w keytab, ale nie z typem szyfrowania <typu szyfrowania>"

Możliwa przyczyna

Ten błąd oznacza, że zakładka kluczy SQL Server nie zawiera typu szyfrowania, którego żąda klient.

Guidance

Aby zweryfikować, przejdź do sekcji Sprawdź plik klawiszy i uprawnienia w tym artykule, aby wypisać wszystkie wpisy w zakładce kluczy. Jeśli nie możesz znaleźć komunikatu o błędzie odpowiadającym principalowi, KVNO i typowi szyfrowania, zaktualizuj plik keytab, aby dodać ten wpis, postępując zgodnie z krokami w tej sekcji.

Komunikat o błędzie: "Serwer biletów <, podmiot>, kvno <, KVNO>, typ szyfrowania <, typ szyfrowania> znaleziony w keytab, ale nie można odszyfrować biletu"

Możliwa przyczyna

Ten komunikat o błędzie wskazuje, że SQL Server nie może użyć poświadczenia z pliku keytab do odszyfrowania nadchodzącego żądania uwierzytelnienia. Błędne hasło często powoduje ten błąd.

Guidance

Odtworz zakładkę klawiszy z poprawnym hasłem. Jeśli używasz adutil, stwórz zakładkę klawiszy z odpowiednim hasłem i postępuj zgodnie z instrukcjami z Tutorial: Użyj adutil do skonfigurowania uwierzytelniania Active Directory z SQL Server on Linux.

Typowe porty

Ta tabela pokazuje typowe porty, których SQL Server on Linux używa do konfiguracji i zarządzania uwierzytelnianiem Active Directory.

Usługa Active Directory Port
DNS 53
LDAP 389
LDAPS 636
Kerberos 88