我想启用以下功能:AWS 中的 Linux ec2 实例,对当前没有主目录的用户执行 LDAP 身份验证。我在 AWS 中有一个可以运行的 openLDAP 来完成此任务
LDAP 验证后:
- 将创建用户主目录
- 用户的公共 ssh 密钥是从
sshPublicKey
LDAP 中的属性中检索到的,并且只有当用户的本地 sshPrivateKey 匹配时,他们才能登录
我知道如何进行 LDAP 身份验证或者通过检索公钥ldapsearch
但我想同时进行这两项操作。
我试图缓解的情况是当员工离开公司时:我只能在 openLDAP 中禁用他们的帐户,即使他们的公钥存在于机器上,他们也无法使用它们,因为他们也会失败 ldap 身份验证。
我在 StackExchanges 上搜索了好久,但还是没有找到我想要的东西。我找到的最接近的答案是
答案1
验证
有AuthorizedKeysCommand
和AuthorizedKeysCommandUser
在sshd_配置(5)自 OpenSSH 6.2 起。您需要根据存储在 LDAP 中的用户信息对用户进行身份验证sshPublicKey
。您甚至不需要 ldapsearch 来获取 sshPublicKey - curl 也可以做到这一点,因为它知道 ldap 协议。
当AuthorizedKeysCommand
定义了但命令不会返回任何公钥时,openssh 服务器将继续使用,AuthorizedKeysFile
然后使用PasswordAuthentication
。
在 AWS EC2 上,PasswordAuthentication 是禁用的,因此如果您确实需要它,则需要在配置中启用它。但我今天根本不推荐使用 PasswordAuthentication。
小回顾:您需要在 /etc/ssh/sshd_config 中使用这些选项:
AuthorizedKeysFile
、AuthorizedKeysCommand
和。AuthorizedKeysCommandUser
PasswordAuthentication
禁用用户
正如问题讨论中提到的那样:您可以使用loginShell
ldap 属性并修改其值,/bin/false
或者/usr/sbin/nologin
使用另一个属性并将其添加到搜索查询中。这取决于您的设置。
你的设置是什么?nslcd (nss-pam-ldapd),nss-pam-ldap,ssd 的或者是其他东西?