如何基于配置SFTP集成AD域?
- By : Will
- Category : FTP & SFTP & FTPS
FTP & SFTP & FTPS
1 前言
一个问题,一篇文章,一出故事。
笔者最近接到需要在SFTP集成AD的任务,于是整理此章节。
2 最佳实践
2.1 环境配置
2.1.1 准备SFTP服务器
2.1.2 集成AD认证
然后,你需要使用如下命令确定可以查询到用户的sftponly组,
id will@cmdschool.org
可见如下显示,
uid=1554803174(will@cmdschool.org) gid=1554800513(domain users@cmdschool.org) groups=1554800513(domain users@cmdschool.org),1554802735(sftponly@cmdschool.org)
如果正确配置仍然无法看到用户组,你需要使用如下命令清理缓存,
sss_cache -E
2.2 配置SFTP与AD集成
2.2.1 修改SSSD配置
cp /etc/sssd/sssd.conf /etc/sssd/sssd.conf.default vim /etc/sssd/sssd.conf
配置修改如下,
[sssd] domains = cmdschool.org config_file_version = 2 services = nss, pam [domain/cmdschool.org] default_shell = /bin/false krb5_store_password_if_offline = True cache_credentials = True krb5_realm = cmdschool.org realmd_tags = manages-system joined-with-adcli id_provider = ad fallback_homedir = /data/sftp/%u@%d/myhome ad_domain = cmdschool.org use_fully_qualified_names = True ldap_id_mapping = True access_provider = ad ad_gpo_access_control = disabled
配置修改后,你需要使用如下命令重启服务使配置生效,
systemctl restart sssd.service
另外,如需附加非同林AD域,请参阅如下章节,
2.2.2 修改SFTP配置
cp /etc/ssh/sftpd_config /etc/ssh/sftpd_config.default vim /etc/ssh/sftpd_config
配置修改如下,
Port 115 PidFile /var/run/sftpd.pid #Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp -l INFO -f AUTH AllowGroups "sftp_users@cmdschool.org" Match Group "domain users@cmdschool.org" ChrootDirectory /data/sftp/%u AllowTcpForwarding no AuthorizedKeysFile /etc/ssh/sftpd_authorized_keys/%u/.ssh/authorized_keys ForceCommand internal-sftp -u 0007 X11Forwarding no
配置修改后,你需要使用如下命令重启服务使配置生效,
systemctl restart sftpd.service
2.3 配置登录自动执行的脚本
2.3.1 修改SSSD配置
vim /etc/sssd/sssd.conf
注解掉如下参数,
#fallback_homedir = /data/sftp/%u@%d/myhome
注:该参数会自动创建不符合要求的用户目录
2.3.2 创建如下脚本
curl https://raw.githubusercontent.com/tanzhenchao/sftptool-for-ad-user/main/loginShell > /usr/local/bin/loginShell chomd +x /usr/local/bin/loginShell chmod 755 /usr/local/bin/loginShell
2.3.3 配置模块调用脚本
vim /etc/pam.d/password-auth
修改如下配置,
#session optional pam_oddjob_mkhomedir.so session optional pam_exec.so debug /usr/local/bin/loginShell
2.4 登录测试
sftp -P 115 'cmdschool.org\will'@sftp.cmdschool.org (cmdschool.org\will@sftp.cmdschool.org) Password: ******** Connected to sftp.cmdschool.org. sftp> ls myhome sftp> cd myhome/ sftp>
没有评论