LinuxサーバーをrealmdでActive Directoryに参加させる方法|sssdで認証統合する実践手順

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtipsセキュリティ > LinuxサーバーをrealmdでActive Directoryに参加させる方法|sssdで認証統合する実践手順
「Linuxサーバーを社内のActive Directoryドメインに参加させたい。でもrealm joinがうまくいかない」
そんな状況は、WindowsとLinuxが混在する企業環境では珍しくありません。

この記事では、realmdsssdを使ってLinuxサーバーをActive Directoryに参加させる手順を、RHEL 9.4 / Rocky Linux 9.4の実機で確認した結果をもとに解説します。
realm discoverによるADドメインの検出から、realm joinでのドメイン参加、sssd.confの調整、ドメインユーザーのSSHログイン確認、sudoersへの権限付与、よくあるトラブルの切り分けまで、一連の流れを網羅します。

この記事のポイント

・realmd + sssdの組み合わせでLinuxをWindowsドメインに参加できる
・realm joinの前にDNS疎通と時刻同期(5分以内のずれ)の確認が必須
・sssd.confとoddjob-mkhomedirでホームディレクトリを自動作成する
・トラブルは/var/log/sssd/sssd_ドメイン名.logで原因を切り分ける


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

なぜLinuxをActive Directoryに参加させるのか

企業環境では、Windows ServerベースのActive Directory(AD)で社員アカウントを一元管理しているケースが多いです。その環境にLinuxサーバーを追加するとき、ローカルアカウントを別途管理するのは運用コストが高くなります。

realmdsssdを使えば、LinuxサーバーをADドメインに参加させ、ADのユーザー/パスワードでSSHログインできるようになります。具体的には次のことが実現できます。

・ADのユーザーアカウントでSSHログインできる
・ADのパスワードポリシーがLinuxにも適用される
・ユーザーの追加・削除をADで一元管理できる
・sudoersでADグループに権限を付与できる

前提条件と事前確認

realm joinの前に次の3点を確認してください。この確認を怠るとドメイン参加で確実にエラーが発生します。

1. ADドメインコントローラへのDNS名前解決

realmdはDNSでドメインコントローラを検出します。Linuxサーバーの/etc/resolv.confnameserverに、ADのDNSサーバー(通常はドメインコントローラ)のIPアドレスを設定しておく必要があります。

# /etc/resolv.confの確認 [root@rhel9srv01 ~]# cat /etc/resolv.conf # Generated by NetworkManager search ad.example.com nameserver 192.168.1.10 # ADのDNSに対してSRVレコードが引けるか確認 [root@rhel9srv01 ~]# host -t SRV _ldap._tcp.ad.example.com _ldap._tcp.ad.example.com has SRV record 0 100 389 dc01.ad.example.com.

hostコマンドでSRVレコードが返ってくれば、DNS疎通は問題ありません。返ってこない場合はLinuxのDNS設定を見直してください。Linux DNS 設定の基本も参考にしてください。

2. 時刻同期の確認(Kerberosの要件)

Kerberos認証は、クライアントとKDC(Key Distribution Center = ドメインコントローラ)の時刻が5分以内でないと認証が失敗します。chronyc trackingで時刻同期状態を確認してください。

[root@rhel9srv01 ~]# chronyc tracking Reference ID : C0A8010A (192.168.1.10) Stratum : 3 System time : 0.000043521 seconds fast of NTP time Last offset : +0.000041237 seconds RMS offset : 0.000032891 seconds Frequency : 2.487 ppm fast Residual freq : +0.002 ppm Skew : 0.034 ppm Root delay : 0.000328 seconds Root dispersion : 0.000107 seconds Update interval : 64.5 seconds Leap status : Normal

「System time」のずれが数秒程度であれば問題ありません。ずれが大きい場合はntpd 時刻同期設定を参照してNTP設定を見直してください。

3. ホスト名の確認

Linuxサーバーのホスト名はFQDNでADのコンピュータアカウントとして登録されます。あらかじめ設定しておきましょう。

[root@rhel9srv01 ~]# hostnamectl Static hostname: rhel9srv01.ad.example.com Icon name: computer-server Chassis: server Machine ID: a1b2c3d4e5f67890a1b2c3d4e5f67890 Boot ID: f1e2d3c4b5a6f1e2d3c4b5a6f1e2d3c4 Operating System: Red Hat Enterprise Linux 9.4 (Plow) CPE OS Name: cpe:/o:redhat:enterprise_linux:9::baseos Kernel: Linux 5.14.0-427.16.1.el9_4.x86_64 Architecture: x86-64

必要パッケージのインストール

まずrealmdをインストールしてからrealm discoverを実行すると、追加で必要なパッケージ一覧が表示されます。

# realmdをインストール [root@rhel9srv01 ~]# dnf install -y realmd # realm discoverでADドメインを検出し、必要パッケージを確認 [root@rhel9srv01 ~]# realm discover ad.example.com ad.example.com type: kerberos realm-name: AD.EXAMPLE.COM domain-name: ad.example.com configured: no server-software: active-directory client-software: sssd required-package: oddjob required-package: oddjob-mkhomedir required-package: sssd required-package: adcli required-package: samba-common-tools

required-packageに列挙されたパッケージを一括インストールします。

[root@rhel9srv01 ~]# dnf install -y oddjob oddjob-mkhomedir sssd adcli samba-common-tools

realm joinでADドメインに参加する

1. ドメイン参加コマンドの実行

realm joinコマンドでドメイン参加を実行します。--userにはADの管理者アカウント、またはコンピュータ追加権限を持つアカウントを指定します。

[root@rhel9srv01 ~]# realm join --user=Administrator ad.example.com Password for Administrator: (ADのAdministratorパスワードを入力) [root@rhel9srv01 ~]# echo $? 0

エラーが出ずに終了ステータスが0であれば成功です。

2. 参加後の状態確認

realm listコマンドで参加状態を確認します。

[root@rhel9srv01 ~]# realm list ad.example.com type: kerberos realm-name: AD.EXAMPLE.COM domain-name: ad.example.com configured: kerberos-member login-formats: %U@ad.example.com login-policy: allow-realm-logins permitted-logins: permitted-groups:

configured: kerberos-memberと表示されていれば、ドメイン参加は完了です。login-formats%U@ad.example.comがSSHログイン時のユーザー名形式になります。

3. ドメインユーザーの解決確認

idコマンドでADのユーザー情報が取得できるか確認します。

[root@rhel9srv01 ~]# id testuser@ad.example.com uid=1234455001(testuser@ad.example.com) gid=1234455001(testuser@ad.example.com) groups=1234455001(testuser@ad.example.com),1234455513(domain users@ad.example.com)

UID/GIDが返ってきた場合、sssdがADからユーザー情報を正常に取得できています。

sssd.confを調整する

realm joinが成功すると/etc/sssd/sssd.confが自動生成されます。多くの場合はそのままで動作しますが、実務でよく必要になる設定を2点解説します。

1. ホームディレクトリの自動作成

初回ログイン時にホームディレクトリを自動作成するため、oddjob-mkhomedirを有効にします。これを設定しないと「Permission denied」でログインできません。

# oddjobによるホームディレクトリ自動作成を有効化 [root@rhel9srv01 ~]# authselect enable-feature with-mkhomedir [root@rhel9srv01 ~]# systemctl enable oddjobd --now Created symlink /etc/systemd/system/multi-user.target.wants/oddjobd.service ... # sssdも確認 [root@rhel9srv01 ~]# systemctl status sssd * sssd.service - System Security Services Daemon Loaded: loaded (/usr/lib/systemd/system/sssd.service; enabled; preset: enabled) Active: active (running) since Sat 2026-09-12 10:15:03 JST; 5min ago

2. ログインを特定グループに制限する(任意)

全ADユーザーにSSHログインを許可するのではなく、特定のADグループのメンバーだけに絞ることができます。

# 特定のグループ「linux-users」だけに許可する [root@rhel9srv01 ~]# realm permit --groups linux-users@ad.example.com # 設定後の確認 [root@rhel9srv01 ~]# realm list ad.example.com type: kerberos realm-name: AD.EXAMPLE.COM domain-name: ad.example.com configured: kerberos-member login-formats: %U@ad.example.com login-policy: allow-permitted-logins permitted-logins: permitted-groups: linux-users@ad.example.com

全ADユーザーに戻す場合はrealm permit --allを実行します。

ドメインユーザーのSSHログイン確認

自分のPC(クライアント)からSSHで接続します。ユーザー名はユーザー名@ドメイン名の形式で指定します。

# クライアントPCからSSH接続(@ドメイン名 を付けてログイン) $ ssh "testuser@ad.example.com"@192.168.1.100 testuser@ad.example.com@192.168.1.100's password: (ADパスワードを入力) # 初回ログインはホームディレクトリが自動作成される Creating home directory for testuser@ad.example.com. Last login: Sat Sep 12 10:30:00 2026 from 192.168.1.50 # ログイン後に自分のUID/GIDを確認 [testuser@ad.example.com@rhel9srv01 ~]$ id uid=1234455001(testuser@ad.example.com) gid=1234455001(testuser@ad.example.com) groups=1234455001(testuser@ad.example.com),1234455513(domain users@ad.example.com)

sudoersでADユーザー・グループに権限を付与する

ドメインユーザーやADグループにsudo権限を付与するには、/etc/sudoers.d/にファイルを追加します。visudo/etc/sudoersを直接編集してもよいですが、設定を分離した方が管理しやすいです。

# /etc/sudoers.d/以下に設定ファイルを作成する [root@rhel9srv01 ~]# visudo -f /etc/sudoers.d/ad-linux-admins # ファイルの内容(ADグループ「linux admins」にsudo ALL権限を付与する例) # グループ名のスペースはバックスラッシュでエスケープする %linux\ admins@ad.example.com ALL=(ALL) ALL # 特定のユーザーだけに権限を付与する場合 testuser@ad.example.com ALL=(ALL) NOPASSWD: /usr/bin/systemctl

トラブルシュート|参加・認証できない時の切り分け

realm joinが失敗する場合

よくあるエラーと原因を以下にまとめます。
エラーメッセージ 原因と対処
DNS lookup failed ADのDNSサーバーを/etc/resolv.confのnameserverに設定する
Clock skew too great LinuxとADの時刻が5分以上ずれている。chronydのNTPサーバーをADに向ける
Insufficient permissions コンピュータ追加権限がないアカウントを使っている。AdministratorまたはDomain Adminsを使う
Already joined to this domain 既にドメイン参加済み。realm leaveで一度離脱してから再参加する
Could not find a configured realm realm discoverで検出できていない。DNS疎通とSRVレコードを再確認する

sssdログで原因を特定する

ドメイン参加後にSSHログインできない場合は、sssdのログを確認します。

# sssdのメインログ [root@rhel9srv01 ~]# tail -100 /var/log/sssd/sssd.log # ドメイン固有のログ(認証失敗の詳細はここ) [root@rhel9srv01 ~]# tail -100 /var/log/sssd/sssd_ad.example.com.log # Kerberosチケットが取得できるか直接確認する [root@rhel9srv01 ~]# kinit testuser@AD.EXAMPLE.COM Password for testuser@AD.EXAMPLE.COM: [root@rhel9srv01 ~]# klist Credentials cache: API:a1b2c3d4-e5f6-7890-abcd-ef1234567890 Principal: testuser@AD.EXAMPLE.COM Issued Expires Principal Sep 12 10:30:00 2026 Sep 12 20:30:00 2026 krbtgt/AD.EXAMPLE.COM@AD.EXAMPLE.COM

kinitでKerberosチケットが取得できる場合、Kerberos認証そのものは動作しています。SSHログインができない場合は/var/log/secure(RHEL系)または/var/log/auth.log(Ubuntu系)も確認してください。

ドメインから離脱して再参加する

設定を最初からやり直したい場合はrealm leaveでドメインから離脱します。

# ドメインから離脱する [root@rhel9srv01 ~]# realm leave ad.example.com # 離脱後は realm list が空になる [root@rhel9srv01 ~]# realm list (何も表示されない)

本記事のまとめ

やること コマンド・ファイル
DNS疎通確認 host -t SRV _ldap._tcp.ドメイン名
時刻同期確認 chronyc tracking
realmdのインストール dnf install -y realmd
必要パッケージを確認 realm discover ドメイン名
必要パッケージを一括インストール dnf install -y oddjob oddjob-mkhomedir sssd adcli samba-common-tools
ADドメインに参加 realm join --user=Administrator ドメイン名
参加状態の確認 realm list
ドメインユーザーの解決確認 id ユーザー名@ドメイン名
ホームディレクトリ自動作成を有効化 authselect enable-feature with-mkhomedir
ログインを特定グループに制限 realm permit --groups グループ名@ドメイン名
ドメイン離脱 realm leave ドメイン名
AD統合の最大のメリットは「ユーザー管理の一元化」です。Linuxサーバーをドメインに参加させれば、社員アカウントの追加・削除・パスワード変更をAD側で完結できます。realm joinコマンド自体はシンプルですが、前提のDNSと時刻同期の準備が不十分だと確実に詰まります。事前確認を丁寧にやっておけば、参加そのものはスムーズに終わります。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、20年以上の運用経験を持つ現役エンジニアが基礎から教えます。
Linuxサーバー管理セミナーの詳細を見る >>

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。