Udostępnij za pośrednictwem


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

Dotyczy:programu SQL Server — 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

Przed rozpoczęciem rozwiązywania problemów należy zweryfikować bieżącego użytkownika, mssql.conf, nazwę główną usługi (SPN) i ustawienia obszaru.

  1. Uzyskaj lub odnowij bilet TGT Kerberos (bilet przyznawania) przy użyciu kinit:

    kinit privilegeduser@CONTOSO.COM
    
  2. Uruchom następujące polecenie, upewniając się, że użytkownik, pod którym uruchamiasz to polecenie, 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 na temat polecenia validate-ad-config, wyświetl pomoc przy użyciu polecenia /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 wymienionego w poprzednich wynikach. Pamiętaj, aby uwzględnić adresy IPv4 i IPv6 tam, gdzie ma to zastosowanie.

    nslookup <IPs returned from the above commands>
    

    Wszyscy powinni zwrócić <hostname>.contoso.com. Jeśli tak nie jest, sprawdź rekordy PTR (wskaźnik), które są tworzone w usłudze 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 również ograniczyć program SQL Server do podzestawu 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 utworzono plik keytab (key table) i że mssql-conf jest skonfigurowany do używania poprawnego 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 podczas tworzenia nazw SPN i wpisów na karcie kluczy nie wpiszesz poprawnie haseł, podczas próby zalogowania się przy użyciu uwierzytelniania usługi Active Directory wystąpią błędy.

    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 to konto uprzywilejowane (zgodne z ustawieniem network.privilegedadaccount w mssql-conf), a nazwa hosta programu 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 mssql.keytab
    Keytab name: FILE: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. Poniższy przykład to przykładowy plik krb5.conf. 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ć. Program SQL Server w systemie Linux umożliwia określenie listy kontrolerów domeny, z którymi program SQL Server kontaktuje się na zasadzie rotacyjnej podczas wyszukiwania za pomocą protokołu LDAP (Lightweight Directory Access Protocol).

    Należy wykonać dwa kroki. Najpierw zmodyfikuj krb5.conf, dodając dowolną liczbę potrzebnych kontrolerów domeny z prefiksem kdc =.

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

    Należy pamiętać, że krb5.conf jest typowym plikiem konfiguracji klienta protokołu Kerberos, więc wszelkie zmiany wprowadzone w tym pliku mają wpływ na inne usługi oprócz programu SQL Server. Przed wprowadzeniem jakichkolwiek zmian skontaktuj się z administratorem domeny.

    Następnie można włączyć ustawienie network.enablekdcfromkrb5conf przy użyciu mssql-conf, a następnie ponownie uruchomić program 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

Zapoznaj się z poniższymi szczegółami, aby pomóc w rozwiązywaniu problemów z uwierzytelnianiem w usłudze Active Directory i identyfikowaniu określonych komunikatów o błędach.

Śledź Kerberos

Po utworzeniu użytkownika, SPN i kluczy keytab oraz skonfigurowaniu mssql-conf w celu upewnienia się, że konfiguracja usługi Active Directory dla programu SQL Server w systemie Linux jest poprawna, można wyświetlić komunikaty śledzenia protokołu Kerberos w konsoli (stdout) podczas próby uzyskania lub odnowienia biletu TGT protokołu Kerberos przy użyciu uprzywilejowanego konta, za pomocą następującego polecenia:

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 zawiera kontekst 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.

Możesz włączyć rejestrowanie security.kerberos i security.ldap, aby zidentyfikować określone komunikaty o błędach w warstwie PAL (warstwa abstrakcji platformy). Utwórz plik logger.ini z następującą zawartością w /var/opt/mssql/, uruchom ponownie program SQL Server, a następnie odtwórz błąd. Komunikaty błędów i debugowania usługi Active Directory PAL są rejestrowane w /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

Nie musisz ponownie uruchamiać programu SQL Server, aby zmiany rejestratora zostały pobrane z logger.ini, ale błędy mogą wystąpić podczas inicjowania usługi Active Directory podczas uruchamiania programu SQL Server, które w przeciwnym razie byłyby niezauważone. Ponowne uruchomienie programu SQL Server gwarantuje przechwycenie wszystkich komunikatów o błędach.

Dziennik zabezpieczeń będzie nadal zapisywany na dysku, dopóki nie usuniesz zmian w logger.ini. Pamiętaj, aby wyłączyć rejestrowanie security.kerberos i security.ldap po zidentyfikowaniu i rozwiązaniu problemu, aby zapobiec wyczerpaniu 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 rejestrowania PAL i odtworzeniu problemu poszukaj pierwszego komunikatu z poziomem dziennika Error, a następnie skorzystaj z poniższej tabeli, aby znaleźć błąd i postępować zgodnie ze wskazówkami i zaleceniami, aby zidentyfikować i rozwiązać problem.

Typowe komunikaty o błędach

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

Możliwa przyczyna

Ten błąd występuje podczas próby zalogowania się przy użyciu konta usługi Active Directory po skonfigurowaniu uwierzytelniania usługi Active Directory.

Wskazówki

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

Zapoznaj się z poniższą listą typowych błędów, aby zidentyfikować możliwą przyczynę każdego błędu, a następnie postępuj zgodnie ze wskazówkami dotyczącymi rozwiązywania problemów, aby rozwiązać ten problem.

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
Nie znaleziono wpisu tabeli kluczy dla głównego><
żą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 .

Wytyczne

Aby zweryfikować problem, postępuj zgodnie ze wskazówkami opisanymi w artykule "Logowanie nie powiodło się. Identyfikator logowania pochodzi z niezaufanej domeny i nie można go używać z uwierzytelnianiem zintegrowanym. (Microsoft SQL Server, Błąd: 18452)" włączyć logowanie PAL w celu zidentyfikowania określonego błędu i podjęcia odpowiednich kroków w rozwiązywaniu problemów.

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;

Nazwa NetBIOS (CONTOSO) jest wymagana w poleceniu, ale w zapleczu podczas wykonywania połączenia LDAP należy podać nazwę FQDN domeny (contoso.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.

Wytyczne

Komunikat o błędzie "Nie można wyszukać krótkiej nazwy domeny z powodu błędu" sugeruje, że nslookup dla contoso nie rozpoznaje adresu IP kontrolera domeny. Należy przejrzeć wyszukiwania DNS i wsteczne wyszukiwania DNS, aby potwierdzić, że nslookup zarówno dla NetBIOS, jak i dla nazwy domeny powinny być zgodne.

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

Ten komunikat o błędzie zwykle wskazuje, że odwrotne rekordy DNS (rekordy PTR) nie istnieją dla wszystkich kontrolerów domeny.

Wskazówki

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

  • Dodaj wpisy rDNS dla wszystkich kontrolerów domeny

    To ustawienie nie jest ustawieniem programu SQL Server i musi być skonfigurowane na poziomie domeny. Może być konieczne współdziałanie z zespołem administracyjnym domeny w celu utworzenia wymaganych rekordów PTR dla wszystkich kontrolerów domeny zwracanych podczas uruchamiania nslookup w nazwie domeny.

  • ogranicz program SQL Server do podzbioru kontrolerów domeny

    Jeśli dodanie rekordów PTR nie jest możliwe dla wszystkich zwracanych kontrolerów domeny, można ograniczyć program SQL Server do podzestawu 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 jeden z takich przykładów 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

Wskazówki

  • Brak poświadczeń

    Inne komunikaty o błędach wyświetlają się jako pierwsze, jeśli poświadczenia nie są ładowane dla połączeń LDAP. Należy włączyć rejestrowanie PAL i sprawdzić dziennik błędów pod kątem komunikatów o błędach przed tym komunikatem. Jeśli nie ma żadnych innych błędów, najprawdopodobniej nie występuje problem z poświadczeniami. Jeśli jeden z nich zostanie znaleziony, wykonaj pracę nad naprawieniem wyświetlanego komunikatu o błędzie. W większości przypadków jest to jeden z komunikatów o błędach opisanych w tym artykule.

  • problemy z siecią rDNS

    Sprawdź dns i wsteczne wyszukiwania DNS.

    Gdy biblioteka OpenLDAP łączy się z kontrolerem domeny, podawana jest albo w pełni kwalifikowana nazwa domeny (FQDN), która w tym przykładzie to contoso.com, albo nazwa FQDN kontrolera domeny (kdc1.contoso.com). Po nawiązaniu połączenia (ale przed zwróceniem powodzenia do obiektu wywołującego) biblioteka OpenLDAP sprawdza adres IP serwera, z który nawiązał połączenie. Następnie wykonuje wsteczne wyszukiwanie DNS i sprawdza, czy nazwa serwera połączonego z (kdc1.contoso.com) jest zgodna z domeną, dla którego zażądano połączenia (contoso.com). Jeśli nie jest ona zgodna, biblioteka OpenLDAP zakończy połączenie jako funkcja zabezpieczeń. Jest to część tego, dlaczego ustawienia rDNS są tak ważne dla programu SQL Server w systemie Linux i są przedmiotem 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 keytab lub brak wszystkich wymaganych wpisów w tym pliku.

Wskazówki

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 wyświetlić bieżące uprawnienia dla wszystkich plików w folderze wpisy tajne, możesz uruchomić następujące polecenie:

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

Możesz użyć tych poleceń, aby ustawić uprawnienia i poziom dostępu dla 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 którykolwiek z warunków w tej sekcji nie zostanie spełniony, zostanie wyświetlony następujący 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

Podczas próby pobrania poświadczeń <principal> z keytabu nie znaleziono stosownych wpisów.

Wytyczne

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 głównym kontem jest zazwyczaj network.privilegedadaccount, na którym są zarejestrowane SPN-y. Jeśli tak nie jest, dodaj go przy użyciu polecenia adutil. Aby uzyskać więcej informacji, zobacz Użyj adutil do skonfigurowania uwierzytelniania Active Directory z SQL Server na Linuxie.

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 wskazuje, że program SQL Server nie może znaleźć wpisu keytab dla żądanego ticketu z określonym numerem wersji klucza (KVNO).

Wskazówki

Aby wyświetlić listę wszystkich wpisów w pliku keytab, zapoznaj się z sekcją Sprawdź plik keytab i uprawnienia tego artykułu. Jeśli nie możesz znaleźć komunikatu o błędzie zgodnego z <principal> i KVNO, dodaj ten wpis, aktualizując plik keytab, wykonując kroki opisane w tej sekcji.

Możesz również uruchomić następujące polecenie, aby uzyskać najnowszy numer KVNO z kontrolera domeny. Przed uruchomieniem tego polecenia należy uzyskać lub odnowić bilet TGT protokołu Kerberos, używając polecenia kinit. 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 typ szyfrowania żądany przez klienta nie był obecny na karcie kluczy programu SQL Server.

Wskazówki

Aby zweryfikować, wykonaj polecenia z sekcji Sprawdź plik keytab i uprawnienia tego dokumentu, aby wyświetlić wszystkie wpisy w pliku keytab. Jeśli nie możesz znaleźć komunikatu o błędzie, który pasuje do principal, KVNO i typu szyfrowania, dodaj ten wpis, aktualizując plik keytab zgodnie z krokami wymienionymi 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 błąd wskazuje, że program SQL Server nie może użyć poświadczeń z pliku keytab do odszyfrowania przychodzącego żądania uwierzytelniania. Błąd jest często wynikiem nieprawidłowego hasła.

Wskazówki

Odtwórz keytab przy użyciu poprawnego hasła. Jeśli używasz adutil, utwórz plik keytab z prawidłowym hasłem, postępując zgodnie z krokami opisanymi w Samouczek: Konfigurowanie uwierzytelniania Active Directory za pomocą SQL Server w systemie Linux.

Typowe porty

W tej tabeli przedstawiono typowe porty używane przez program SQL Server w systemie Linux do konfigurowania i administrowania uwierzytelnianiem usługi Active Directory.

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