可以的。CentOS 上的 SFTP 是可以集成 LDAP 的,但需要注意一个关键点:SFTP 本身依赖 SSH(sshd),所以“SFTP + LDAP”本质上是“SSH 登录认证走 LDAP”。
下面给你一个清晰、可落地的说明。
sshd 完成所以流程是:
SFTP 客户端
↓
sshd
↓
PAM / NSS
↓
LDAP Server
适用于 CentOS 7 / 8 / Stream
openldap-clientsnss-pam-ldapd 或 sssdpam_ldapnslcd + pam_ldapyum install -y sssd sssd-ldap openldap-clients
示例 /etc/sssd/sssd.conf:
[sssd]
services = nss, pam
domains = LDAP
[domain/LDAP]
id_provider = ldap
auth_provider = ldap
ldap_uri = ldap://ldap.example.com
ldap_search_base = dc=example,dc=com
ldap_tls_reqcert = never
⚠ 生产环境建议开启 TLS / StartTLS
authselect select sssd with-mkhomedir
systemctl enable --now sssd
id ldapuser1
getent passwd ldapuser1
很多人集成 LDAP 后,只想让用户 SFTP 传文件,不能登录 shell。
Match Group sftpusers
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
groupadd sftpusers
LDAP 用户通过 SSSD 映射:
# sssd.conf
ldap_group_member = memberUid
或:
usermod -aG sftpusers ldapuser1
Chroot 目录必须是 root 所有:
chown root:root /data/sftp/ldapuser1
chmod 755 /data/sftp/ldapuser1
mkdir /data/sftp/ldapuser1/upload
chown ldapuser1:ldapuser1 /data/sftp/ldapuser1/upload
❌ LDAP 用户没有 home 目录
✅ 开启 pam_mkhomedir
❌ 登录后立刻断开
✅ 检查 Chroot 权限
❌ CentOS 8 不用 nslcd
✅ 优先 SSSD
| 场景 | 是否支持 |
|---|---|
| SFTP 用 LDAP 账号 | ✅ |
| 禁止 LDAP 用户 SSH | ✅ |
| 多台 CentOS 统一账号 | ✅ |
| Windows AD | ✅(LDAP / AD 都行) |
如果你愿意,可以告诉我:
我可以直接给你一套可复制的配置。