参考文档:https://www.cnblogs.com/daiss314/p/13227180.html
一、概念介绍
LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,简称为LDAP。LDAP的目录服务其实也是一种数据库系统(Berkeley DB),只是这种数据库是一种树形结构(B Tree),适合读不适合频繁写,不支持事务不能回滚。
我们用LDAP实现多个组件的用户管理,比如把gitlab和jenkins、harbor等组件的用户放在LDAP一起管理,组件只负责权限管理。用户在这些组件登录时都走LDAP的认证,让用户可以用一套用户名密码即可登录所有组件。
LDAP的树形结构的概念理解。
从叶子到根的这条“路径”是一条数据,称为条目(Entry),这条数据的全局唯一标识叫做dn
dc
(Domain Component)是域名的一部分,把完整的域名拆开。ou
(Organization Unit)是组织单元。cn
(Common Name)一般是用户的名字。uid
(User Id)一般是用户登录id。
简单理解就是:dn是 一条记录的详细位置; dc是一个区域(相当于哪颗树);ou是一个组织(相当于哪一个分支);cn/uid(分支上的哪个苹果)。
二、安装ldap服务端
#安装服务端
[root@ldap ~]# yum install -y openldap openldap-clients openldap-servers migrationtools
#配置ldap服务器
[root@ldap ~]# vim /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif
#配置监视数据库的配置文件
[root@ldap ~]# vim /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{1\}monitor.ldif
#配置ldap数据库
将/usr/share/openldap-servers/DB_CONFIG.example的文件复制到/var/lib/ldap/DB_CONFIG目录下,并给文件授权ldap属主属组
[root@ldap ~]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[root@ldap ~]# chown -R ldap.ldap /var/lib/ldap/
#检测配置是否正确
[root@ldap ~]# slaptest -u #输入命令出现succeeded表示验证成功
#启动ldap,并设置开机自启
[root@ldap ~]# systemctl start slapd
[root@ldap ~]# systemctl enable slapd
[root@ldap ~]# ss -antup | egrep “389|636” 检测服务及端口
#启动ldap服务器的配置,需添加以下ldap模式
[root@ldap ~]# ls /etc/openldap/schema/*.ldif | xargs -I {} sudo ldapadd -Y EXTERNAL -H ldapi:/// -f {}
#创建ldap DIT
[root@ldap schema]# vim /usr/share/migrationtools/migrate_common.ph
修改61行 $NAMINGCONTEXT{‘group’} = “ou=Groups”;
修改71行 $DEFAULT_MAIL_DOMAIN = “songchen.com”;
修改74行 $DEFAULT_BASE = “dc=songchen,dc=com”;
修改90行 $EXTENDED_SCHEMA = 1;
#生成一个基地,ldif文件为域的DIT
#切换到migrationtools目录下执行 ./migrate_base.pl > /root/base.ldif
[root@ldap schema]# cd /usr/share/migrationtools/
[root@ldap migrationtools]# ./migrate_base.pl > /root/base.ldif
#将基地上传到ldap数据库中
[root@ldap migrationtools]# ldapadd -x -W -D “cn=auto,dc=songchen,dc=com” -f /root/base.ldif
#创建一些用户和组,并迁移到ldap
[root@ldap migrationtools]# mkdir -p /home/guests
[root@ldap migrationtools]# useradd -d /home/guests/test12 test12
[root@ldap migrationtools]# echo 123456 | passwd –stdin test12
#过滤这些用户和组以及/etc/shadow不同文件密码
[root@ldap guests]# getent passwd | tail -n 5
[root@ldap guests]# getent shadow | tail -n 5 > /root/shadow
[root@ldap guests]# getent group | tail -n 5 > /root/groups
#使用migrationtools为这些用户创建ldif文件
切换到migrationtools
目录下编辑vim migrate_passwd.pl文件(修改188行,把/etc/shadow换成/root/shadow)
[root@ldap guests]# cd /usr/share/migrationtools
[root@ldap migrationtools]# vim migrate_passwd.pl
然后在当前路径下执行下面的命令
[root@ldap migrationtools]# ./migrate_passwd.pl /root/users > users.ldif
[root@ldap migrationtools]# ./migrate_group.pl /root/groups > groups.ldif
将这些用户和组ldif文件上传到ldap数据库中
[root@ldap migrationtools]# ldapadd -x -W -D “cn=auto,dc=songchen,dc=com” -f users.ldif
[root@ldap migrationtools]# ldapadd -x -W -D “cn=auto,dc=songchen,dc=com” -f groups.ldif
现在搜索LDAP DIT的所有记录(如果能搜索到就说明安装成功了,至此ldap服务器安装完成(按这个安装只支持uid用户的登录))
[root@ldap migrationtools]# ldapsearch -x -b “dc=songchen,dc=com” -H ldap://192.168.200.150
三、电脑端安装客户端
ldapadmin官网下载地址: http://www.ldapadmin.org/download/ldapadmin.html
电脑端下载完成后,点击进入填写ldap服务器地址
在ou=people下去创建用户组或用户(右击–new–Group),输入名字就可以点击保存,保存之后如右图所示(或者创建用户)
登录到ldap服务器去查看信息,就可以看到增加的一条信息如图
[root@ldap ~]# ldapsearch -x -b “dc=songchen,dc=com” -H ldap://192.168.200.150
这里的信息就是通过ldapadmin客户端添加进来的,到此全部部署完成
注意:
如果要开启ssl要修改配置文件,要增加ldaps:///
vi /etc/sysconfig/slapd
SLAPD_URLS=”ldapi:/// ldap:/// ldaps:///”
再重启服务:service slapd restart
四、配置gitlab使用ldap认证
1、登录gitlab服务器,修改gitlab配置文件
[root@gitlab ~]# cd /etc/gitlab
[root@gitlab gitlab]# vim gitlab.rb
gitlab配置文件说明:
1.gitlab_rails[‘ldap_enabled’] = true #开启ldap认证
2.host: 是搭建的ldap服务器的ip,根据实际情况修改;(填写ip地址或域名)
3.uid: 可以写cn,也可以写为uid,都能识别(具体为什么没深入研究);
4.bind_dn: openldap域的管理员账号,根据实际情况修改(如 cn=admin,dc=yhz,dc=com)
5.password: openldap的管理员,根据实际情况修改(如123456)
6.active_directory: 似乎是针对连接是否是ad域控的标示,因为这部分是域服务器的配置,故为true;
7.allow_username_or_email_login: 用户登录是否用户名和邮箱都可以,方便用户故配置true;(看个人需求)
8.base: 用户列表所在的目录,因为新增的用户都在People下(试验了用户放在User时gitlab检测不到用户,故新建了一个目录People,并将新建的用户移入了该目录下),就这么配置,根据实际情况修改;
注意:下边几行还有个EOS,也需要将注释去掉
2、重新加载配置文件并重启服务
重新加载配置
[root@gitlab gitlab]# gitlab-ctl reconfigure
重启gitlab
[root@gitlab gitlab]# gitlab-ctl restart
检查是否能正常获取ldap用户
[root@gitlab gitlab]# gitlab-rake gitlab:ldap:check #正常连接的情况下执行之后能看到用户的列表
3、访问gitlab web界面,用ldap账户登录验证
再次访问web界面,没有问题就会出现LDAP登录选项了,输入LDAP用户密码即可登录
五、配置jenkins使用ldap认证
提示:ldap配置后原管理账户会失效,所以一旦配置错误就无法登录,甚至无法正常访问系统。
建议对Jenkins配置文件先进行备份,再修改设置。
Centos7使用rpm安装jenkins的默认目录为:/var/lib/jenkins/
1、备份jenkins的配置文件
备份jenkins配置文件:config.xml
[root@jenkins ~]# cp /var/lib/jenkins/config.xml{,.$(date +%F).bak}
2、配置jenkins
登录jenkins-à点击设置à全局安全设置à安全域选择 LDAP
配置如下:
授权策略还继续使用Role-Based Strategy策略即可。
保存设置,退出账户测试登录即可。此时jenkins的管理账户已失效。
3、测试登录
ldap的yhz账户可以正常登陆
添加项目策略
让ldap的123账户只能看到a-1项目
4、配置ldap失败导致jenkins账户无法登录的解决方法
在/var/lib/jenkins/config.xml配置文件中找到这段关于ldap认证的信息
上面的配置不当导致了无法通过ldap认证,而且导致jenkins也无法正常登陆了,可以把上面这段代码修改为如下样子:
<securityRealm class=”hudson.security.HudsonPrivateSecurityRealm”>
<disableSignup>false</disableSignup>
<enableCaptcha>false</enableCaptcha>
</securityRealm>
重启jenkins服务,即可用jenkins原管理账户登录。
今天的文章linux ldap服务器搭建_基于docker搭建局域网服务器分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/77980.html