参考文档: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服务器相关推荐

  1. Linux安装部署FTP服务器

    Linux安装部署FTP服务器 本文章会将安装FTP服务器的步骤以及一些遇到的问题来记录下 因为项目中要与第三方对接数据,需要用到FTP服务器以提供他们每天上传数据,因为之前在本地的VMware虚拟机 ...

  2. Linux搭建部署Ldap服务器,亲测可用

    本文为转载,原链接:https://www.cnblogs.com/daiss314/p/13227180.html 一,服务器安装 yum install -y openldap openldap- ...

  3. 在LINUX中部署NIS服务器

    在LINUX中部署NIS服务器 一.部署前的准备工作:   1.准备两台虚拟机,一台作server,一台作clint.   2.配好网卡,使用相同的网卡.   3.配好ip,ip必须在同一网段.   ...

  4. 怎样在linux上部署web服务器

    linux上部署web服务器 1.从Apache官网下载源码. 2.卸载原来已经存在的httpd. 3.挂载光盘准备部署httpd. 4.源码编译安装httpd, 解包 , 配置(--prefix:指 ...

  5. Openldap部署LDAP服务器平台

    Openldap部署LDAP服务器平台 一.安装软件包 yum -y install openldap openldap-clients openldap-servers db4 二.配置openld ...

  6. linux安装部署apache+subversion+jsvnadmin

    linux安装部署apache+subversion+jsvnadmin 1.apache网页服务器(注意不是tomcat) 2.subversion版本控制(svn服务器) 3.jsvnadmin项 ...

  7. Nginx实战基础篇一 源码包编译安装部署web服务器

    Nginx实战基础篇一 源码包编译安装部署web服务器 版权声明: 本文遵循"署名非商业性使用相同方式共享 2.5 中国大陆"协议 您可以自由复制.发行.展览.表演.放映.广播或通 ...

  8. Hadoop 安装部署-多服务器

    环境 Ubuntu Linux 8.04 linuxsvr01.vgolive.com         192.168.1.209 linuxsvr02.vgolive.com         192 ...

  9. linux服务器查看系统装到哪个盘,查看linux安装了什么服务器地址

    查看linux安装了什么服务器地址 内容精选 换一换 Cloud-Init是开源的云初始化工具,使用安装了Cloud-Init的镜像创建云服务器时可以通过"用户数据注入"功能,注入 ...

最新文章

  1. asp.net调试方法
  2. 禁止访问 共享计算机,win7如何禁止局域网用户访问电脑
  3. SpringBoot2.1.5(45)--- Spring Boot的核心模块
  4. python random_Python random() 函数
  5. mysql 设置域名_mysql 设置域名
  6. Find the longest route with the smallest starting point
  7. redis教程(七)之redis List
  8. N32903系列的基础知识(1)
  9. zookeeper安装和应用场合(名字,配置,锁,队列,集群管理)
  10. 工作流_JBPM之Helloword
  11. APISpace 全国行政区查询API 方便好用
  12. 宋佳乐和郭晓婷天津之眼观景照片
  13. 从《天龙八部 3D》到《诛仙》手游,我们如何连续做出成功产品?
  14. ArcGIS中,一个点集里的点两两连线,比如有4个点,就连3+2+1=6条线
  15. linux proftpd 用户,Linux下安装和配置proftpd教程
  16. Arduino温度传感器全系列使用详解
  17. 华中科技大学 教学大纲 计算机,《计算理论》课程教学大纲
  18. Java百度鹰眼轨迹批量上传
  19. 深度学习3—用三层全连接神经网络训练MNIST手写数字字符集
  20. 2019小明的比赛c++

热门文章

  1. Angular 监听滚动条事件
  2. [期末复习]路由交换考试题
  3. 学计算机女生颜值,女生就该拥有高颜值笔记本!适合女生的笔记本电脑推荐
  4. 计算机二级考试内容vf,计算机二级VF考试内容大纲
  5. php 百度收录api_php获取百度收录、百度热词及百度快照的方法
  6. 链表上的舞者——舞蹈链(DLX算法)
  7. 2.4G-WiFi连接路由器过程
  8. es文件浏览器通过ftp服务器,es文件浏览器如何利用ftp服务器
  9. 微信小程序是如何实现快速编译的?
  10. 用JAVA实现蓝桥杯基础训练之十六进制转十进制:从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。