1、OpenLDAP 客户端 SSSD 配置

1.1、客户端软件安装

  1. yum -y install openldap-clients sssd authconfig nss-pam-ldapd

image.png

1.2、拷贝 OpenLDAP 服务器的/etc/openldap/certs 目录下的私钥和公钥至OpenLDAP 客户端节点/etc/openldap/cacerts 目录下

  1. cd /etc/openldap/certs/
  2. scp ldap.key ldap.crt root@cdh2.macro.com:/etc/openldap/cacerts/
  3. scp ldap.key ldap.crt root@cdh3.macro.com:/etc/openldap/cacerts/

image.png
image.png

提示如下错误,先在客户端创建该目录
image.png

  1. mkdir /etc/openldap/cacerts/

1.3、在客户端节点上执行如下命令

  1. cacertdir_rehash /etc/openldap/cacerts/
  2. ll /etc/openldap/cacerts/

image.png

1.4、执行如下命令启用 sssd 服务

在如下参数中—enableldaptls 如果 OpenLDAP 服务未启用 TLS 则将此参数修改为—disableldaptls

  1. authconfig --enableldaptls --disableforcelegacy --disablekrb5 --ldapserver ldap://cdh1.macro.com --ldapbasedn "dc=macro,dc=com" --enablemkhomedir --update

image.png

1.5、修改/etc/sssd/sssd.conf 文件

  1. 在执行 authconfig 命令时会默认生成,如果文件不存在则新建,文件内容如下
    1. vi /etc/sssd/sssd.conf
    ```shell [domain/default]

autofs_provider = ldap ldap_schema = rfc2307bis ldap_search_base = dc=macro,dc=com id_provider = ldap auth_provider = ldap chpass_provider = ldap ldap_uri = ldap://cdh1.macro.com ldap_id_use_start_tls = True ldap_tls_cacertdir = allow cache_credentials = True ldap_tls_cacertdir = /etc/openldap/cacerts [sssd] services = nss, pam, autofs

domains = default [nss] homedir_substring = /home

[pam]

  1. ![image.png](https://cdn.nlark.com/yuque/0/2020/png/2680099/1606200373066-75ebcc7b-aa75-4546-9349-0e4faa3528f8.png#align=left&display=inline&height=712&margin=%5Bobject%20Object%5D&name=image.png&originHeight=712&originWidth=764&size=46810&status=done&style=none&width=764)
  2. <a name="pQYoF"></a>
  3. ## 1.6、修改 sssd.conf 文件权限
  4. ```shell
  5. chmod 600 /etc/sssd/sssd.conf
  6. ll /etc/sssd/sssd.conf

image.png

1.7、启动 sssd 服务并加入系统自启动

  1. systemctl start sssd
  2. systemctl enable sssd
  3. systemctl status sssd

image.png

1.8、通过 id 查看用户 OpenLDAP 的用户

  1. more /etc/passwd | grep ldapuser1
  2. id ldapuser1

image.png

2、OpenLdap 与 SSH 集成

2.1、修改配置文件

  • PAM(Pluggable Authentication Modules )是由Sun提出的一种认证机制。它通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。


  1. 修改配置文件/etc/ssh/sshd_config,使 ssh 通过 pam 认证账户

    1. vi /etc/ssh/sshd_config

    image.png

  2. 修改配置文件/etc/pam.d/sshd,以确认调用 pam 认证文件

    1. vi /etc/pam.d/sshd

    image.png
    加入这一行确保登录成功后创建用户的 home 目录

  3. 修改配置文件

    1. vim /etc/pam.d/password-auth

    在如下配置文件的四个地方添加如下内容

    1. auth sufficient pam_ldap.so forward_pass
    2. account [default=bad success=ok user_unknown=ignore] pam_ldap.so
    3. password sufficient pam_ldap.so use_authtok
    4. session optional pam_ldap.so

    image.png

  4. 修改/etc/pam.d/system-auth 配置文件

    1. vi /etc/pam.d/system-auth

    添加如下配置到/etc/pam.d/system-auth

    1. auth sufficient pam_ldap.so forward_pass
    2. account [default=bad success=ok user_unknown=ignore] pam_ldap.so
    3. password sufficient pam_ldap.so use_authtok
    4. session optional pam_ldap.so

    image.png

  5. 重启 sshd 服务

    1. systemctl restart sshd
    2. systemctl status sshd

    image.png

    3、验证SSH登录

    3.1、确认root 用户只存在于 OpenLDAP

    1. more /etc/passwd |grep ldapuser1
    2. id ldapuser1

    more不会查询到结果,id可以查询到
    image.png

    3.2、su 切换到 ldapuser1 用户

    1. su ldapuser1

    image.png

    3.3、ssh 登录本机

  6. 重启 sssd 和 nslcd 服务。 systemctl restart sssd systemctl restart nslcd

    1. systemctl restart sssd
    2. systemctl restart nslcd
    3. ssh ldapuser1@localhost
    4. pwd

    image.png

4、安装过程中的问题解决

4.1、ssh登录本机失败,密码错误,截图如下:

image.png
原因:添加ldapuser1用户时user.ldif文件没有设置密码。
解决方案:使用管理员用户修改密码

  1. ldappasswd -H ldap://cdh1 -x -D "cn=Manager,dc=macro,dc=com" -W -S "uid=ldapuser1,ou=People,dc=macro,dc=com"

4.2、启动sssd失败,找不到配置文件截图如下。

image.png
检查配置文件,发现缺少配置块的指定,截图如下。
image.png