我想在第一句話就說清楚,因為這是大家最有可能讀到的部分——本文完全基於 Christian Hofstede-Kuhn (Larvitz) 的工作,他撰寫了「Integrating FreeBSD 15 with FreeIPA: Native Kerberos and LDAP Authentication」。功勞歸於他。除此之外,我喜歡分享所有有用的東西——我也把我的部落格當作保存和維護 FreeBSD 文件的地方……我見過許多部落格和知識來源隨著時間在網路上消失……而且由於我使用免費的 WordPress,我確信這個部落格(和知識)在我離開後仍會長存。

所以,正如你所見,有幾個動機:

我只希望 Christian 不會因為我這樣做而生氣 :)

……我會直接通知他關於這篇文章。

或者——如果你需要在 FreeBSD 上設定 MIT Kerberos 伺服器,請改用這篇 FreeBSD MIT Kerberos Server 文章。

首先——這種新方法之所以可行,是因為 FreeBSD 在 FreeBSD 15.0-RELEASE 中將 Kerberos 實作從 Heimdal 換成了 MIT Kerberos……我真的很慶幸 FreeBSD 終於這麼做了。

正如你所知,我過去已經多次處理過這個主題:

所有這些先前的嘗試都有許多缺點:

這個新方法使用了 FreeBSD 15.0-RELEASE 的 MIT Kerberos,以及 net/nss-pam-ldapd 套件中輕量級的 nslcd(8) 守護進程。唯一(非技術性)的缺點是它使用了 LGPL21/LGPL3 授權……但由於我們連接的是整個 Linux 網域的 FreeIPA/IDM,這似乎影響不大,對吧?:)

現在——我們首先需要 FreeIPA/IDM 伺服器……使用舊文章 Connect FreeBSD 14.0-STABLE to FreeIPA/IDM 中的說明。

現在來談談新方法……讓我們開始將 pkg(8) 的儲存庫從 quarterly 切換到 latest。

接下來我們將安裝必要的套件。

如果你的 DNS 在 /etc/resolv.conf 中設定,但無法解析 FreeIPA/IDM,請改用 /etc/hosts。

在 FreeIPA/IDM 伺服器上新增我們的 FreeBSD 主機及其 IP。

在 FreeBSD 主機上,從 FreeIPA/IDM 伺服器複製金鑰檔 (keytab),並將其放置在正確的位置並設定適當的權限。

nslcd(8) 守護進程需要讀取 /etc/krb5.keytab 金鑰檔的權限才能工作——為此,我們將 sshd 使用者加入其 nslcd 群組。

為 nslcd(8) 守護進程建立 /usr/local/etc/nslcd.conf 設定檔。

啟用並啟動 nslcd(8) 守護進程。

以簡單的 sed(1) 單行命令修改 /etc/nsswitch.conf 設定檔,如下所示。

正如 Christian Hofstede-Kuhn (Larvitz) 在下方所示,可以使用更簡潔的 /etc/nsswitch.conf。

現在讓我們測試一下 SSH 的運作情況。

可以正常運作,但是…… ${HOME} 目錄沒有自動建立,因為我們還沒有設定它。

讓我們再次使用 sed(1)……是的,它必須分成兩行。

我們使用 optional 而非 required,以防萬一 pam_mkhomedir.so 失敗或不可用。

記錄在案,整個 /etc/pam.d/sshd PAM 設定檔如下所示。

我們現在將設定 sudo(8) 以獲得更多權限。

我們也將在此處設定 doas(1),因為它更簡單且更安全。

我還透過建立空的 ~/.hushlogin 檔案並移除 ~/.profile 檔案中的 /usr/bin/fortune 來「靜默」了登入過程。

……而這是我新增的部分——使用 FreeIPA/IDM 使用者進行主控台存取——因為目前——它無法正常運作。

為了解決這個問題,我們將取消註解 /etc/pam.d/system 中所有符合 pam_krb5.so 模組的行。

您已到達本文結尾——下次再見 :)

據我所理解,FreeIPA 叢集無法在 FreeBSD 上實現嗎?我的意思是,AD 控制器,或者在 2026 年稱之為何?我想在包含 Windows 用戶端和 FreeBSD 伺服器的網路中擁有一個網域,而不需要 Linux……

從我閱讀和嘗試過的一切來看——FreeIPA 綁定於 Linux,因為它依賴於 systemd(1) 或 SELinux 等系統,以及僅在 Linux 上可用的其他幾項功能……這非常令人遺憾,因為 FreeIPA 所提供的功能本來應該是可選的。

是的,看來 init/daemon 監控系統(systemd 或其他)和核心加固對於協調 LDAP、Kerberos、DNS 和其他活動組件並不是很相關。對於額外功能來說是個不錯的選擇,但對於核心操作並非必需。

Pingback: Uutiset (20.02.2026) – Karajamaki

Pingback: FreeBSD MIT Kerberos Server | 𝚟𝚎𝚛𝚖𝚊𝚍𝚎𝚗

Pingback: Valuable News – 2026/02/23 | 𝚟𝚎𝚛𝚖𝚊𝚍𝚎𝚗