Overview
Part 1 built the FreeIPA server. Part 2 starts where day-to-day Linux operations begin: a client is enrolled into FreeIPA, resolves central users and groups, obtains Kerberos tickets and allows SSH logins with central identities.
The lab used Fedora 44, FreeIPA 4.13.3, SSSD 2.13.1, SELinux Enforcing, working forward and reverse DNS and separate server/client VMs. The time-skew failure test remained inconclusive; Kerberos clock skew is therefore described as a documented requirement, not as a failure mode proven in this lab.
Identity Series: Current Position
This article is Part 2 of the Identity series with FreeIPA and Keycloak. Part 1 covers installing the first FreeIPA server. This part documents the practical client path: ipa-client-install, SSSD, NSS, PAM, Kerberos, SSH, cache and recovery.
The test starts at the FreeIPA web UI. The screenshot shows only the isolated lab environment, not production credentials.
After login, FreeIPA administration is reachable. This confirms the server side for the client checks.
Lab Setup
The lab used ipa01.example.test as the FreeIPA server and client01.example.test as the enrolled Linux client. All screenshots and commands come from this isolated test environment.
Server: ipa01.example.testClient: client01.example.testDomain: example.testRealm: EXAMPLE.TESTDistribution: Fedora 44FreeIPA: 4.13.3SSSD: 2.13.1SELinux: Enforcing
The central user testuser exists in FreeIPA and is later resolved on the Linux client through SSSD/NSS.
The lab-users group proves central group management and the POSIX group resolution later visible on the client.
What Client Enrollment Changes
ipa-client-install is more than package setup. The client is registered as a FreeIPA host, receives a host identity, Kerberos configuration, SSSD domain configuration and integration into NSS and PAM. Linux then asks SSSD for users and groups from the central identity source instead of relying only on local accounts.
NSS resolves central users and groups for Linux tools such as id, getent or ls.
PAM uses SSSD for login, password checks and optional home directory creation on first login.
Kerberos issues tickets for users and services in the realm.
SSSD caches identities and, after successful login, authentication data for defined offline scenarios.
Prerequisites
Before enrollment, name resolution, time and package basics must be correct. The client FQDN, reachable FreeIPA DNS records and synchronized time are especially important.
hostnamectlgetent hosts ipa01.example.testdig +short ipa01.example.testdig +short -x <client-ip>timedatectlchronyc trackinggetenforce
Install the FreeIPA Client
On Fedora, install the FreeIPA client packages. SSSD, Kerberos tools and oddjob-mkhomedir are relevant so central users can log in cleanly and receive home directories.
sudo dnf install -y freeipa-client sssd oddjob-mkhomedir krb5-workstation openssh-server
Enroll the Linux Client into FreeIPA
The lab used automated enrollment. The central interactive command looks like this; real passwords do not belong in scripts, screenshots or articles.
sudo ipa-client-install \--domain=example.test \--realm=EXAMPLE.TEST \--server=ipa01.example.test \--mkhomedir \--enable-dns-updates
Verify Enrollment on the FreeIPA Server
After enrollment, the client must be visible as a FreeIPA host. This is the fastest server-side check that the host identity exists.
ipa host-show client01.example.test
client01.example.test is registered as a FreeIPA host. This is the visible server-side proof of completed enrollment.
SSSD: The Bridge Between Linux and FreeIPA
SSSD is the central bridge between Linux and FreeIPA. It talks to the identity source, exposes NSS and PAM data, handles Kerberos-related behavior and manages the local cache. systemctl and sssctl are the most important first operational tools.
systemctl status sssdsssctl domain-status example.testsssctl user-checks testuser
systemctl is-active sssdsssctl domain-status example.testactiveOnline status: OnlineActive servers:IPA: ipa01.example.testDiscovered IPA servers:- ipa01.example.test
Resolve Users Through NSS
When NSS works through SSSD, standard Linux tools see the central user. This is what separates a working enrollment from merely installed client packages.
id testusergetent passwd testuser
id testusergetent passwd testuseruid=376600003(testuser) gid=376600003(testuser) groups=376600003(testuser),376600004(lab-users),376600005(linux-admins)testuser:*:376600003:376600003:Test User:/home/testuser:/bin/sh
getent passwd testusertestuser:*:376600003:376600003:Test User:/home/testuser:/bin/sh
Groups and POSIX Attributes
FreeIPA centrally manages POSIX attributes such as UID, GID, login shell and group membership. The client resolves these values through SSSD; local duplicates with identical names should be avoided.
getent group lab-usersid testuser
Kerberos Login
Kerberos confirms that the user can authenticate in the realm. kinit obtains a ticket and klist shows the result. The lab successfully proved ticket issuance for testuser.
kinit testuserklist
kinit testuserklistPassword for testuser@EXAMPLE.TEST:Ticket cache: KCM:1001Default principal: testuser@EXAMPLE.TESTValid starting Expires Service principal09/19/2026 13:54:16 09/20/2026 13:28:19 krbtgt/EXAMPLE.TEST@EXAMPLE.TEST
klist shows the Kerberos ticket in the EXAMPLE.TEST realm. This proves ticket issuance in the lab.
PAM, Home Directory and SSH
Linux login runs through PAM. With oddjob-mkhomedir or equivalent PAM integration, the home directory is created at first login. SSH therefore uses the same central user as local login.
ssh testuser@client01.example.testpwdid
ssh testuser@client01.example.testpwdidtestuser/home/testuseruid=376600003(testuser) gid=376600003(testuser) groups=376600003(testuser),376600004(lab-users),376600005(linux-admins)
The central user can log in through SSH; PAM, SSSD and home directory creation work together.
SSSD Cache and Offline Behavior
SSSD can cache known identities and, after a successful login, authentication data. That does not mean that a brand-new user who never logged in can always work offline. The lab checked cache behavior, offline authentication after prior login and recovery after service and DNS disruption.
sssctl user-checks testusersudo systemctl stop sssdsudo systemctl start sssdsssctl domain-status example.test
DNS Failure, SSSD Failure and Recovery
The lab controlled DNS and SSSD failure conditions and then restored them. Expected behavior: DNS problems affect new resolution and server contact, while the SSSD cache only provides limited local continuity. After DNS or SSSD recovery, id, getent, kinit and SSH must work again.
getent hosts ipa01.example.testid testuserkinit testuserssh testuser@client01.example.testsssctl domain-status example.test
Troubleshooting
| Symptom | Check | Typical Cause |
|---|---|---|
| ipa-client-install does not find the server | Check dig, getent hosts and SRV records | DNS or search domain is wrong |
| id testuser returns nothing | Check systemctl status sssd and sssctl domain-status | SSSD domain inactive or FreeIPA unreachable |
| kinit fails | Check realm, password, time and KDC reachability | Kerberos configuration, clock or credentials |
| SSH login does not work | Check PAM, sshd_config, HBAC and logs | PAM/HBAC/SSHD blocks login |
| Home directory is missing | Check oddjobd and PAM mkhomedir | Home directory creation is not active |
ipa-client-install does not find the server
- Check
- Check dig, getent hosts and SRV records
- Typical Cause
- DNS or search domain is wrong
id testuser returns nothing
- Check
- Check systemctl status sssd and sssctl domain-status
- Typical Cause
- SSSD domain inactive or FreeIPA unreachable
kinit fails
- Check
- Check realm, password, time and KDC reachability
- Typical Cause
- Kerberos configuration, clock or credentials
SSH login does not work
- Check
- Check PAM, sshd_config, HBAC and logs
- Typical Cause
- PAM/HBAC/SSHD blocks login
Home directory is missing
- Check
- Check oddjobd and PAM mkhomedir
- Typical Cause
- Home directory creation is not active
Result Check
| Area | Check | Expected Result | Status |
|---|---|---|---|
| Client enrollment | Host client01.example.test visible in FreeIPA | Host is centrally registered | PASS |
| SSSD | sssctl domain-status example.test | Domain is reachable and usable | PASS |
| NSS | id/getent for testuser | Central identity resolves | PASS |
| Kerberos | kinit and klist | Ticket in realm EXAMPLE.TEST exists | PASS |
| PAM/SSH | SSH login with testuser | Central user can log in | PASS |
| Cache/recovery | SSSD/DNS disruption and return | Resolution and login work again after recovery | PASS |
Client enrollment
- Check
- Host client01.example.test visible in FreeIPA
- Expected Result
- Host is centrally registered
- Status
- PASS
SSSD
- Check
- sssctl domain-status example.test
- Expected Result
- Domain is reachable and usable
- Status
- PASS
NSS
- Check
- id/getent for testuser
- Expected Result
- Central identity resolves
- Status
- PASS
Kerberos
- Check
- kinit and klist
- Expected Result
- Ticket in realm EXAMPLE.TEST exists
- Status
- PASS
PAM/SSH
- Check
- SSH login with testuser
- Expected Result
- Central user can log in
- Status
- PASS
Cache/recovery
- Check
- SSSD/DNS disruption and return
- Expected Result
- Resolution and login work again after recovery
- Status
- PASS
Security and Operational Aspects
For production, the lab commands alone are not enough. Clean DNS zones, time sources, SELinux, restrictive administrator rights, documented enrollment processes, logging, FreeIPA server backups and a clear client re-enrollment process matter.
Kerberos is time-sensitive. The MIT Kerberos documentation describes clock skew as a security boundary. This specific failure mode was not reliably reproduced in this lab and is therefore not counted as lab proof.
Limits of This Lab
Fedora 44 was tested as both server and client platform; this was not a cross-distribution matrix.
No FreeIPA replica or HA topology was tested.
HBAC, sudo rules, password policies and lifecycle workflows follow in later lab parts.
The time-skew failure case remained inconclusive and is not claimed as PASS.
What Comes Next in the Identity Series
The next practical step is central identity lifecycle: creating, activating and disabling users, maintaining groups, testing password and expiration behavior and proving those states on an enrolled Linux client. That follow-up article is not published yet and is therefore not linked here.






