Ldap

帶有電子郵件地址 LDAP 使用者名的 SSSD

  • January 21, 2019

我有一個小型 SFTP 伺服器設置,使用 SSSD 通過 LDAP 使用 SSH 密鑰對使用者進行身份驗證。這對於基本使用者名(即“使用者名”)完全適用,但我被要求進行更改,以便使用者使用他們的電子郵件地址登錄,這些可以來自任何域。

首次嘗試登錄為“test@example.com”;SSSD 很好地獲取電子郵件地址使用者並將其與公鑰、originalDn 和其他所有內容一起放入本地數據庫。現在我的問題是登錄失敗並且使用者無法登錄。在日誌中我收到錯誤:

AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys test@example.com failed, status 1

如果我嘗試在主機上手動執行命令,我會得到:

Error looking up public keys

“getent passwd test@example.com”返回我期望看到的內容。

我想這與將使用者設置為“test@example.com@ldap”的本地 DN 有關,並且 SSSD 無法從自己的數據庫中獲取 sshPublicKey?但是嘗試以“test@example.com@ldap”身份登錄或使用上述命令手動測試也會失敗。我很難過如何克服這個問題。

這是我的 SSSD 配置

[sssd]
config_file_version = 2
services = nss, pam, ssh, sudo
# Number of times services should attempt to reconnect in the event of a Data Provider crash
reconnection_retries = 3

domains = LDAP
full_name_format = %1$s

###########
### NSS ###
###########
[nss]
override_homedir = LDAP_HOMEDIR
homedir_substring = /

memcache_timeout = 600

###########
### PAM ###
###########
[pam]

###################
### LDAP DOMAIN ###
###################
[domain/LDAP]
id_provider = ldap
auth_provider = ldap
ldap_tls_reqcert = allow
debug_level = 10
ldap_uri = LDAP_URI
ldap_search_base = LDAP_BASE_ROOT
ldap_user_ssh_public_key = sshPublicKey
cache_credentials = true

ldap_id_use_start_tls = true

任何幫助表示讚賞。

如果將來有人遇到這個問題,我在發布後大約 10 分鐘就設法解決了這個問題,這大約需要 10 個小時才能解決這個問題。在 sssd.conf 中的域配置下添加:

re_expression = (?P<name>.+)

引用自:https://serverfault.com/questions/950081