Вход в домен: варианты подключения
Подключить ноутбук к домену можно четырьмя способами. Разница между ними — кто заводит машинную учётную запись и кто настраивает SSSD: либо за вас это делает realm, либо вы делаете оба шага руками.
Ниже — от самого простого к самому ручному. Для ноутбука в AD первым способом и стоит ограничиться.
Что вообще происходит при подключении
Полезно понимать, что именно меняется в системе — тогда ошибки перестают быть загадочными:
- в домене создаётся учётная запись компьютера (
laptop-name$) — это и есть «машина в домене»; - её пароль сохраняется в keytab
/etc/krb5.keytab(файл читает только root); - в
/etc/sssd/sssd.confпоявляется секция домена; - в
/etc/krb5.conf— домен Kerberos (если ещё не было); - в
/etc/nsswitch.confк строкамpasswdиgroupдобавляетсяsss; - SSSD запускается и начинает отдавать доменных пользователей системе.
Всё остальное — варианты того, кто делает шаги 1–6.
Способ 1: realm — подключение одной командой
Так работает по умолчанию в Ubuntu и Debian: realmd находит домен, спрашивает у него параметры, сам зовёт нужный механизм (adcli для AD), сам пишет sssd.conf и запускает службу.
$ sudo apt install realmd sssd-ad sssd-tools adcli
Шаг 1 — разведка. Ничего не меняет, только смотрит, видно ли домен в сети:
$ realm discover example.com
example.com
type: kerberos
realm-name: EXAMPLE.COM
domain-name: example.com
...
login-formats: %U@example.com
login-policy: allow-realm-logins
Если тут пусто — дальше идти нет смысла: проблема в сети или DNS, а не в SSSD. Домен ищется через DNS по записям _kerberos._tcp (SRV), поэтому нужен DNS домена, а не только его IP.
Шаг 2 — подключение. Учётка должна иметь право заводить компьютеры в домене:
$ sudo realm join --user=admin example.com
Password for admin@EXAMPLE.COM:
Шаг 3 — проверить, что вышло:
$ realm list
$ getent passwd user@example.com
$ id user@example.com
$ sudo systemctl status sssd | head -5
Шаг 4 — домашний каталог при первом входе. По умолчанию доменный пользователь входит в систему без своего каталога. Чтобы он создавался:
$ sudo pam-auth-update --enable mkhomedir
Выход из домена (машина навсегда уходит из домена — например, списываемый ноутбук):
$ sudo realm leave example.com
$ sudo adcli delete-computer --domain=example.com --login-user=admin
realm leave убирает настройки с машины, но учётную запись компьютера в домене не всегда удаляет — вторую команду делают, чтобы не копить мусор в каталоге.
Способ 2: adcli + SSSD вручную
То же самое, но без realmd: вы сами пишете sssd.conf, а adcli заводит машинную учётку. Так делают, когда нужен нестандартный конфиг или когда realmd не понимает хитрый домен.
$ sudo apt install sssd-ad sssd-tools adcli
# 1. Завести машинную учётку и получить keytab
$ sudo adcli join example.com --login-user=admin --domain-controller=dc1.example.com
# 2. Написать конфиг (подробно — в «SSSD и Active Directory»)
$ sudo tee /etc/sssd/sssd.conf >/dev/null <<'EOF'
[sssd]
config_file_version = 2
services = nss, pam
domains = example.com
[domain/example.com]
id_provider = ad
auth_provider = ad
access_provider = ad
ad_domain = example.com
krb5_realm = EXAMPLE.COM
EOF
# 3. Права и запуск
$ sudo chmod 600 /etc/sssd/sssd.conf
$ sudo systemctl enable --now sssd
Машинная учётка уже есть в keytab, поэтому отдельно kinit для машины не нужен.
Способ 3: каталог LDAP без машинной учётки
Если домена Active Directory нет, а есть просто LDAP-каталог (или AD, но без прав заводить компьютеры), подключаются иначе: машинной учётки нет, а SSSD ходит в каталог служебной учётной записью и ищет пользователей в дереве.
$ sudo apt install sssd-ldap sssd-tools
Ключевые настройки (полностью — в «SSSD и LDAP»):
[domain/ldap.example.com]
id_provider = ldap
auth_provider = ldap
ldap_uri = ldaps://ldap.example.com
ldap_search_base = dc=example,dc=com
ldap_default_bind_dn = cn=sssd-reader,ou=services,dc=example,dc=com
ldap_default_authtok = <пароль служебной учётки>
ldap_id_use_start_tls = true
Разница принципиальная: здесь никто не «входит в домен» — машина просто читает каталог. Значит, нет ни машины в домене, ни единого входа через Kerberos: пароль каждый раз проверяется в LDAP.
Способ 4: FreeIPA
Если в инфраструктуре FreeIPA (это AD-подобный каталог на 389 Directory Server), то подключают его клиентом:
$ sudo apt install freeipa-client
$ sudo ipa-client-install --domain=example.com --server=ipa.example.com
Клиент сам настраивает SSSD, Kerberos и NSS — это аналог realm join для IPA. В настройки SSSD лучше не лезть руками: ipa-client-install перезапишет. Значения попадут в /etc/sssd/sssd.conf с id_provider = ipa.
Как выбрать
| Ситуация | Способ |
|---|---|
| Домен Active Directory, обычный ноутбук | realm (1) |
| AD, нужен нестандартный конфиг SSSD | adcli + вручную (2) |
| Каталог LDAP, машинных учёток нет | sssd-ldap (3) |
| Инфраструктура FreeIPA | ipa-client-install (4) |
| Домен без DNS-записей SRV, только по IP | вручную (2) + ad_server в конфиге |
Что чаще всего ломается
Почти все сбои подключения — не про SSSD, а про три вещи вокруг него:
DNS. Домен ищется по SRV-записям. Если resolvectl status не показывает доменный DNS, realm discover молчит, а kinit пишет «Cannot find KDC». Проверять сначала это.
Время. Kerberos не терпит расхождения часов больше пары минут. Ноутбук после сна — обычный источник «не пускает в домен»:
$ timedatectl
$ sudo systemctl restart systemd-timesyncd
Права на sssd.conf. Файл должен быть 600, иначе служба не стартует, а в журнале — малопонятная строка про permissions.
Проверка подключения — по шагам
# 1. Домен виден
$ realm discover example.com
# 2. Машина в домене (для способов 1 и 2)
$ sudo klist -k /etc/krb5.keytab | head
# 3. Пользователи приходят в систему
$ getent passwd user@example.com && id user@example.com
# 4. Пароль проверяется доменом
$ kinit user@example.com && klist
# 5. Вход целиком, как у человека за экраном
$ su - user@example.com
# 6. Что видит сам SSSD
$ sudo sssctl domain-status example.com
$ sudo sssctl user-checks user@example.com
Если что-то не сходится — журнал, а не догадки:
$ sudo journalctl -u sssd -n 50 --no-pager
$ sudo tail -n 50 /var/log/sssd/sssd_example.com.log
Источники
man 8 realm— пакетrealmd0.17.1-3build3;man 1 adcli—adcli0.9.2-1ubuntu3 (проверено 18.10.2026).man 5 sssd.conf,man 5 sssd-ad,man 5 sssd-ldap— пакетsssd-common2.12.0-1ubuntu5.5.man 5 nsswitch.conf,man 8 pam-auth-update,man 8 pam_mkhomedir— подключение к NSS и PAM.- Репозиторий проекта: https://github.com/SSSD/sssd
Что ещё не проверено
- Порядок и команды сверены с man-страницами, но на живом домене не выполнялись: своего AD или LDAP у нас нет. На рабочем домене первым делом проверить
realm discoverиklist -k, а дальше по шагам выше. - Права учётной записи на подключение компьютера (
ms-DS-MachineAccountQuotaв AD) зависят от политики домена — это к администратору домена, не к SSSD.
Комментарии
Пока комментариев нет.