SSSD-service start niet na koppelen van Ubuntu aan Active Directory: ontbrekend /etc/krb5.keytab

Documentatie van SSSD-servicefout op Ubuntu-nodes na succesvolle domeinkoppeling, inclusief fouten zoals “krb5_kt_start_seq_get failed: Key table file ‘/etc/krb5.keytab’ not found” en oplossing met PackageKit.

Overzicht

De System Security Services Daemon (SSSD) is een service die toegang biedt tot identiteits- en authenticatieresources van externe directories, zoals Active Directory. Het stelt Ubuntu-systemen in staat te integreren met Windows-domeinen voor gebruikersauthenticatie en -autorisatie. SSSD beheert taken zoals het cachen van credentials, offline-ondersteuning en beheer van Kerberos-tickets.

Deze documentatie behandelt een veelvoorkomend probleem waarbij de SSSD-service niet start op Ubuntu-nodes, zoals pxd-gitlab, ondanks dat de node succesvol aan het domein is gekoppeld. De hoofdoorzaak is vaak een ontbrekend pakket genaamd PackageKit, dat een hoog-niveau pakketbeheertool is die pakketinstallatie abstraheert over verschillende backends (bijv. APT voor Debian-gebaseerde systemen). PackageKit is vereist voor bepaalde SSSD-afhankelijkheden en automatische pakketafhandeling tijdens domeinkoppelingen.

Symptomen

Het provisionen van nodes zoals pxd-gitlab met Ansible mislukt bij de Restart sssd handler:

RUNNING HANDLER [c2platform.core.linux : Restart sssd] *************************
fatal: [pxd-gitlab]: FAILED! =>
    changed: false
    msg: |-
        Unable to start service sssd: Job for sssd.service failed because the control process exited with error code.
        See "systemctl status sssd.service" and "journalctl -xeu sssd.service" for details.

De node is succesvol aan het domein gekoppeld, zoals geverifieerd met realm list en realm join C2.ORG:

vagrant@pxd-gitlab:~$ sudo su -
root@pxd-gitlab:~# realm list
c2.org
  type: kerberos
  realm-name: C2.ORG
  domain-name: c2.org
  configured: kerberos-member
  server-software: active-directory
  client-software: sssd
  required-package: sssd-tools
  required-package: sssd
  required-package: libnss-sss
  required-package: libpam-sss
  required-package: adcli
  required-package: samba-common-bin
  login-formats: %U
  login-policy: allow-realm-logins
root@pxd-gitlab:~# realm join C2.ORG
realm: Already joined to this domain

of

vagrant@pxd-gitlab:~$ echo "Supersecret!"  | realm join --user=tony C2.ORG
realm: Already joined to this domain

Het inspecteren van de service met systemctl status sssd.service toont aan dat het keytab-bestand /etc/krb5.keytab ontbreekt:

vagrant@pxd-gitlab:~$ sudo  systemctl status sssd.service
× sssd.service - System Security Services Daemon
     Loaded: loaded (/usr/lib/systemd/system/sssd.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Tue 2026-02-10 10:56:45 UTC; 11s ago
    Process: 13970 ExecStart=/usr/sbin/sssd -i ${DEBUG_LOGGER} (code=exited, status=1/FAILURE)
   Main PID: 13970 (code=exited, status=1/FAILURE)

Feb 10 10:56:45 pxd-gitlab sssd_be[13986]: krb5_kt_start_seq_get failed: Key table file '/etc/krb5.keytab' not found
Feb 10 10:56:45 pxd-gitlab sssd_be[13986]: krb5_kt_start_seq_get failed: Key table file '/etc/krb5.keytab' not found
Feb 10 10:56:45 pxd-gitlab sssd_be[13986]: krb5_kt_start_seq_get failed: Key table file '/etc/krb5.keytab' not found
Feb 10 10:56:45 pxd-gitlab sssd_be[13986]: krb5_kt_start_seq_get failed: Key table file '/etc/krb5.keytab' not found
Feb 10 10:56:45 pxd-gitlab sssd_be[13986]: krb5_kt_start_seq_get failed: Key table file '/etc/krb5.keytab' not found
Feb 10 10:56:45 pxd-gitlab sssd_be[13986]: Failed to read keytab [FILE:/etc/krb5.keytab]: No suitable principal found in keyt>
Feb 10 10:56:45 pxd-gitlab sssd[13970]: Exiting the SSSD. Could not restart critical service [c2.org].
Feb 10 10:56:45 pxd-gitlab systemd[1]: sssd.service: Main process exited, code=exited, status=1/FAILURE
Feb 10 10:56:45 pxd-gitlab systemd[1]: sssd.service: Failed with result 'exit-code'.
Feb 10 10:56:45 pxd-gitlab systemd[1]: Failed to start sssd.service - System Security Services Daemon.

Een ander symptoom is dat een vergelijkbare configuratie werkt op nodes zoals pxd-ubuntu-devtop, waarbij het belangrijkste verschil de aanwezigheid van het ubuntu-desktop-pakket is, dat PackageKit bevat.

Bovendien toont inloggen op de pxd-ad-node en controleren van Active Directory Users and Computers geen Computer-item voor pxd-gitlab. Dit komt doordat de SSSD-service niet goed functioneert.

Review

De Ansible-code die verantwoordelijk is voor het uitvoeren van de domeinkoppelopdracht is:

 group_vars/ubuntu/ad.yml

138      type: shell
139      cmd: |
140        systemctl restart systemd-resolved sssd sshd
141        echo "{{ px_ad_admin_password }}" \
142        | realm join --user={{ px_ad_domain_name_admin }} {{ px_ad_domain_name | upper }}
143        touch /etc/domain_joined
144      label: >-
145        realm join --user={{ px_ad_domain_name_admin }} {{ px_ad_domain_name | upper }}
146      creates: /etc/domain_joined
147    - name: /etc/sssd/sssd.conf  # TODO C2-839

Oplossing

De hoofdoorzaak is het ontbrekende packagekit-pakket, dat noodzakelijk is voor SSSD om bepaalde afhankelijkheden af te handelen tijdens het domeinkoppelproces. Na het toevoegen van dit pakket aan de Ansible-configuratie voor Ubuntu-provisioning-nodes zoals pxd-gitlab, werkt de setup zonder problemen.

 group_vars/ubuntu/ad.yml

 3bootstrap_packages:
 4  kerberos:
 5    - name:
 6        - realmd
 7        - sssd
 8        - sssd-ad
 9        - sssd-krb5
10        - krb5-user
11        - adcli
12        - policykit-1  # GUI? move to ubuntu_devtop?
13        - packagekit  # required for SSSD
14        - sssd-tools
15        - libnss-sss
16        - libpam-sss
17        - bind9-utils  # for nsupdate
18        - samba-common-bin  # for troubleshooting
19      type: os