LDAP 应用文档
背景
公司目前使用跳板机进行远程服务器登录,这就意味着需要登录的每台服务器都需要创建相应的用户才能保证用户登录正常,这就造成了用户管理混乱、管理起来麻烦等问题,所以进行上线 LDAP 进行用户统一管理。
问题
应用 LDAP 后还需要保留跳板机,以及海外服务器同样需要另外一台跳板机。
解决方案
- 部署高可用 LDAP 服务器(国内跳板机与国外跳板机形成主从)
- 在另外一台服务器部署 LDAP 服务,将国内跳板机与国外跳板机同时作为登录服务的验证主机
方案说明
第一种方案不做过多解释。
本次主要实施第二种方案,因为没有更多的服务器需要管理并且配置因为特殊原因不能更改(10台左右,囧~~~~~~~),会有人对此种方案不是很理解,请看下图:
第一步登录: 用户使用自己的登录 Jumper
或者 Singapore
,会自动生成相应的用户公私钥注册到 LDAP 对应用户中
第二步登录: 使用jumper
或者Singapore
生成公私钥进行其他服务器登录,验证同样是通过 LDAP 进行验证
方案实施
经过以上的介绍大家应该了解本次实施的目的,接下来进入实战。
-
LDAP 安装配置
这里不进行说明,请查看自动安装 LDAP
-
跳板机配置
本次重点: 实现当用户同 LDAP 验证后登录到跳板机,需要跳板机自动生成相应用户的公私钥,并且能注册相应的公钥到
LDAP
服务中。接下来进行实现步骤众所周知大家登录
Linux
服务器后系统会相应的执行一些必要的初始化脚本,对当前用户进行一些基础环境变量的导入、以及初始化,执行了那些本次不做过多说明,自行查看Linux
登录系统加载过程。本次主要配置
/etc/profile.d/
下的ldap_init.sh
实现自动生成公私钥、上传至 LDAP 服务$ cat /etc/profile.d/ldap_init.sh #!/usr/bin/env bash sshkey_command=`which ssh-keygen` sshkey_file_path=~/.ssh ldap_server="<your_ldapserver_fqdn>" ldap_dc="$(cut -d'.' -f1 <<<"${ldap_server}")" general_file_name=/tmp/${USER}.ldif ldap_server_passwd="<your_ldapserver_password>" general_file(){ sshkey_key_conents=`cat ${sshkey_file_path}/${USER}.pub` cat>${general_file_name}<<EOF dn: uid=${USER},ou=Users,dc=${ldap_dc},dc=com changeType: modify add: sshPublicKey sshPublicKey: ${sshkey_key_conents} EOF } # Add sshkey to ldap server for user add_sshkey(){ ldapmodify -x -D "cn=Manager,dc=${ldap_dc},dc=com" -w ${ldap_server_passwd} -f ${general_file_name} } setup_alias(){ cat>~/.bashrc<<EOF alias ssh='ssh -i ${sshkey_file_path}/${USER}' EOF source ~/.bashrc } if [[ ! -f "${sshkey_file_path}/${USER}.pub" ]] && [[ ${USER} != "root" ]];then echo "The current user is ${USER}" ${sshkey_command} -f ${sshkey_file_path}/${USER} -C "${USER}@jiumiaodai.com" -N '' -q general_file add_sshkey setup_alias fi
-
验证
配置后每个用户存在3个公钥在 ldap 服务端
分别是:用户本地公钥、国内
jumper
公钥、国外jumper
公钥
功能分别是:登录各 jumper、登录国内服务器、登录国外服务器 -
完成
以上方案不一定能适合所有人,当做抛砖引玉给大家提供一个思路。
转载自原文链接, 如需删除请联系管理员。
原文链接:LDAP 应用文档,转载请注明来源!