http://qiita.com/T_Tsan/items/eeb0a9ae9b4cdeb80934

https://www.ossramblings.com/using-ldap-to-store-ssh-public-keys-with-sssd

安装

yum -y install openssh-ldap
cp /usr/share/doc/openssh-ldap-6.6.1p1/openssh-lpk-openldap.schema /etc/openldap/schema

服务器加入schema

# /etc/openldap/slapd.conf
include /etc/openldap/schema/openssh-lpk-openldap.schema
include /etc/openldap/schema/my.schema

重启服务 配置生效

cd /etc/openldap/
rm -rf slapd.d/*
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
chown -R ldap:ldap /etc/openldap/slapd.d
systemctl restart slapd

生成用户key

ssh-keygen -b 2048 -t rsa -f /tmp/admin01.pem -q -N ''
ssh-keygen -b 2048 -t rsa -f /tmp/op01.pem -q -N ''
ssh-keygen -b 2048 -t rsa -f /tmp/dev01.pem -q -N ''

用户信息导入

cat << _EOF_ | ldapmodify -x -W -H ldaps:/// -D cn=manager,dc=suntv,dc=tv
dn: uid=admin01,ou=people,dc=suntv,dc=tv
changetype: modify
add: objectClass
objectClass: ldapPublicKey
-
add: sshPublicKey
sshPublicKey: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtFaqzott45UAn3PwrmleujMJxZtugxH5Hq8UaD5OfhbOsMU1ATAQF48hCreQZXWYr3kqAD61yYzkXuoA57/3VkSGklEtOgTbweJvz2mtEMslFvQxnGqeijEvEdy4BWDZvWIq153/5Rf2hJCQYr8OVKSLfjWqbFxNycbvDfJgxOB8EUZEDIzBXrecYQgnJeYDeDAx0V8aLmb4cK99vsU9XTUAx+59bzuwm+ZqHmQqYIcLvtUm49HZ2eY+O4q6/Y+ov/KvyEW7PzeOaQqz3xTHkQH8TZZBZri/SDxxX5OCpqlz4vMNOqu8Azro4hYOyeILhAltbjDkpU3+kcvXbLoSN ken@ken-ThinkPad-X220
-
add: objectClass
objectClass: MyAccount
-
add: active
active: 1
-
add: access
access: ssh dn: uid=op01,ou=people,dc=suntv,dc=tv
changetype: modify
add: objectClass
objectClass: ldapPublicKey
-
add: sshPublicKey
sshPublicKey: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFclesnE+mETaKgqvNcfGvK3u2+z8qgzUQgE9I2fgd7lh2sEIR4zxKiSlNW6LN386VWFZ0FkQol5/Y3ZpivPEsqUjOQ5x90bNgrlsqCenLRtsO+uN7oqfzjpTBunq7W9XQ+c4iiCBX6xoHTWjUbIlw9FWkC7dkpMXQHJmbAF57iDsBTMhXrjEzORGSTTBNIO5sz4QEqICxzG4n3YdGGMLUutVDXH1tJWytU1+VUcaSLUyMAGmDB1r+DhUi4vsTb0BZ8V3odSzvC0nuww47ooM0FGb8X1Av7DfcJ3VcEQl5ges+HRqwMxLzSV+GFBurnDXa1SixIWuObRNhaq8Swekr ken@ken-ThinkPad-X220
-
add: objectClass
objectClass: MyAccount
-
add: active
active: 1
-
add: access
access: ssh dn: uid=dev01,ou=people,dc=suntv,dc=tv
changetype: modify
add: objectClass
objectClass: ldapPublicKey
-
add: sshPublicKey
sshPublicKey: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtFaqzott45UAn3PwrmleujMJxZtugxH5Hq8UaD5OfhbOsMU1ATAQF48hCreQZXWYr3kqAD61yYzkXuoA57/3VkSGklEtOgTbweJvz2mtEMslFvQxnGqeijEvEdy4BWDZvWIq153/5Rf2hJCQYr8OVKSLfjWqbFxNycbvDfJgxOB8EUZEDIzBXrecYQgnJeYDeDAx0V8aLmb4cK99vsU9XTUAx+59bzuwm+ZqHmQqYIcLvtUm49HZ2eY+O4q6/Y+ov/KvyEW7PzeOaQqz3xTHkQH8TZZBZri/SDxxX5OCpqlz4vMNOqu8Azro4hYOyeILhAltbjDkpU3+kcvXbLoSN ken@ken-ThinkPad-X220
-
add: objectClass
objectClass: MyAccount
-
add: active
active: 1
-
add: access
access: ssh
_EOF_

目标服务器配置

ssh

# /etc/ssh/sssd_config
PubkeyAuthentication yes
AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys # 获取sssd中publickey
AuthorizedKeysCommandUser nobody # 7.x
# AuthorizedKeysCommandRunAs nobody # 6.x

sssd

cat > /etc/sssd/sssd.conf << _EOF_
[domain/LDAP]
debug_level = 9
cache_credentials = True
enumerate = false id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
sudo_provider = ldap ldap_uri = ldaps://master.local
ldap_backup_uri = ldaps://slave.local
ldap_search_base = dc=suntv,dc=tv
ldap_user_search_base = ou=people,dc=suntv,dc=tv
ldap_group_search_base = ou=group,dc=suntv,dc=tv
ldap_sudo_search_base = ou=sudoer,dc=suntv,dc=tv access_provider = ldap
ldap_access_order = filter
ldap_access_filter = (&(&(active=1)(access=ssh))(|(memberOf=cn=admin,ou=host,dc=suntv,dc=tv)(memberOf=cn=dev,ou=host,dc=suntv,dc=tv))) # 用户过滤条件
ldap_user_ssh_public_key = sshPublicKey # 支持ssh public key ldap_tls_cacertdir = /etc/openldap/cacerts
ldap_tls_cacert = /etc/openldap/cacerts/ca.crt
ldap_tls_reqcert = never
ldap_id_use_start_tls = false [sssd]
domains = LDAP
services = nss, pam, sudo, ssh
config_file_version = 2 [nss]
domains = LDAP
filter_users = root
filter_groups = root [pam]
domains = LDAP [sudo]
domains = LDAP [ssh]
domains = LDAP
ssh_hash_known_hosts = false
_EOF_

测试

ssh -i admin01.pem admin01@192.168.1.21
ssh -i op01.pem op01@192.168.1.21
ssh -i dev01.pem dev01@192.168.1.21 ssh -i admin01.pem admin01@192.168.1.22
ssh -i op01.pem op01@192.168.1.22
ssh -i dev01.pem dev01@192.168.1.22

尚未解决问题

ssh支持password和sshkey两种登录方式,我需要只允许root或者指定用户使用password方式登录,其他用户只能用sshkey方式

openldap sshkey & 用户自定义属性的更多相关文章

  1. [ 总结 ] RHEL6/Centos6 使用OpenLDAP集中管理用户帐号

    使用轻量级目录访问协议(LDAP)构建集中的身份验证系统可以减少管理成本,增强安全性,避免数据复制的问题,并提供数据的一致性.

  2. Centos7 yum安装OpenLDAP(普通用户可以更改密码)

    环境 系统版本:centos7.4 openldap版本2.4 安装和配置 安装并启动服务 安装: yum install openldap openldap-servers openldap-cli ...

  3. 5.openldap设置用户本身修改密码

    1. 修改slapd.conf文件 #vim /etc/openldap/slapd.conf 修改下如下内容 access to dn.subtree="ou=People,dc=bawo ...

  4. 基于OPENldap搭建postfix 虚拟用户

    本文首发: https://www.somata.work/2019/DependOPENldapBuildPostfixVirtualMailUser.html postfix + dovecot ...

  5. OpenLDAP使用疑惑解答及使用Java完成LDAP身份认证

    导读 LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是实现提供被称为目录服务的信息服务.目录服务是一种特殊的数据库系统,其专门针对读取,浏览 ...

  6. 完整版的OpenLDAP搭建全过程

    总结:          先写总结,再写正文,嘿嘿嘿.这还是第一次认真的写个文档,写个总结,哈哈.大概在一个月前,第一次听说这个东西,完全没有概念,刚开始的时候看理论的知识,看了几次之后就没看了,看不 ...

  7. (三)Harbor使用OpenLDAP认证登陆

    接上一篇<安装Harbor>,安装好之后,接下来我们使用OpenLDAP来进行Harbor  web界面的登陆验证及权限分配! OpenLDAP: 使用OpenLDAP的都知道,这是一个集 ...

  8. gitlab 接入 openldap、AD

    =============================================== 20171009_第2次修改                       ccb_warlock === ...

  9. OpenLdap 对接内部系统(Gitlab+Wiki+Jumpserver+Openvpn)配置

    LDAP 全称轻量级目录访问协议(英文:Lightweight Directory Access Protocol),是一个运行在 TCP/IP 上的目录访问协议.目录是一个特殊的数据库,它的数据经常 ...

随机推荐

  1. 用CSS定义每段首行缩进2个字符 转

    应该遵循w3c所制定的html/xhtml标准来使用tag和编写网页.如果你对此不太了解,可以到w3c的网站www.w3.org去找相关资料,或者买一本xhtml的书(注意不要买过时的html的书,尽 ...

  2. Java中的HashSet和TreeSet

    1:Set集合(理解) (1)Set集合的特点 无序,唯一 (2)HashSet集合(掌握) A:底层数据结构是哈希表(是一个元素为链表的数组) B:哈希表底层依赖两个方法:hashCode()和eq ...

  3. RabbitMQ/JAVA (发布/订阅模式)

    发布/订阅模式即生产者将消息发送给多个消费者. 下面介绍几个在发布/订阅模式中的关键概念-- 1. Exchanges (转发器) 可能原来我们都是基于一个队列发送和接收消息.现在介绍一下完整的消息传 ...

  4. reverse-daily(1)-audio_visual_receiver_code

    本人第一篇随笔,就以一篇CTF逆向分析的文章开始吧! 链接:http://pan.baidu.com/s/1eS6xFIa 密码:u14d 因为re的分析比较琐碎,所以主要就挑一些重点东西来说. 据说 ...

  5. ubuntu15.10跑裸机程序跑.bin文件

    1:安装tftp:#apt-get update#apt-get install tftp-hpa tftpd-hpa xinetd2:#cd /srv#mkdir tftp#chmod 777 tf ...

  6. java中的transient关键词

    以下内容全部参考自:http://www.cnblogs.com/lanxuezaipiao/p/3369962.html,有些直接复制了. 1. transient的作用 实体类实现了Seriliz ...

  7. #import 跟 #include、@class 之间的区别

    #include 是 C/C++ 导入头文件的关键字  是完整的包含某个文件的内容(包括该文件中被导入的文件) #import 是 OC 导入头文件的关键字 #import 指令是 OC 针对 #in ...

  8. css中选择器的使用

    css是英文Cascading Style Sheets的缩写.它是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言.我们再将html比喻 ...

  9. html5本地存储的解决

    1.解决了Cookie  4K存储大小的问题2.解决了请求头常带存储信息的问题3.解决了关系型存储的问题4.跨域问题,跨浏览器*在 HTML5 中,数据不是由每个服务器请求传递的,而是只有在请求时使用 ...

  10. Hadoop及其相关组件简介

    一.大数据介绍 1.大数据指的是所涉及的数据量规模巨大到无法通过人工,在合理时间内达到截取.管理.处理.并整理成为人类所能解读的形式的信息. 2.大数据,可帮助我们能察觉商业趋势.判断研究质量.避免疾 ...