需要 LDAP 身份验证和 ssh 身份验证

需要 LDAP 身份验证和 ssh 身份验证

我想启用以下功能:AWS 中的 Linux ec2 实例,对当前没有主目录的用户执行 LDAP 身份验证。我在 AWS 中有一个可以运行的 openLDAP 来完成此任务

LDAP 验证后:

  • 将创建用户主目录
  • 用户的公共 ssh 密钥是从sshPublicKeyLDAP 中的属性中检索到的,并且只有当用户的本地 sshPrivateKey 匹配时,他们才能登录

我知道如何进行 LDAP 身份验证或者通过检索公钥ldapsearch但我想同时进行这两项操作。

我试图缓解的情况是当员工离开公司时:我只能在 openLDAP 中禁用他们的帐户,即使他们的公钥存在于机器上,他们也无法使用它们,因为他们也会失败 ldap 身份验证。

我在 StackExchanges 上搜索了好久,但还是没有找到我想要的东西。我找到的最接近的答案是

使用 LDAP 进行 SSH 密钥验证

SSH 密钥认证和双因素认证的组合

答案1

验证

AuthorizedKeysCommandAuthorizedKeysCommandUsersshd_配置(5)自 OpenSSH 6.2 起。您需要根据存储在 LDAP 中的用户信息对用户进行身份验证sshPublicKey。您甚至不需要 ldapsearch 来获取 sshPublicKey - curl 也可以做到这一点,因为它知道 ldap 协议。

AuthorizedKeysCommand定义了但命令不会返回任何公钥时,openssh 服务器将继续使用,AuthorizedKeysFile然后使用PasswordAuthentication

在 AWS EC2 上,PasswordAuthentication 是禁用的,因此如果您确实需要它,则需要在配置中启用它。但我今天根本不推荐使用 PasswordAuthentication。

小回顾:您需要在 /etc/ssh/sshd_config 中使用这些选项: AuthorizedKeysFileAuthorizedKeysCommand和。AuthorizedKeysCommandUserPasswordAuthentication

禁用用户

正如问题讨论中提到的那样:您可以使用loginShellldap 属性并修改其值,/bin/false或者/usr/sbin/nologin使用另一个属性并将其添加到搜索查询中。这取决于您的设置。

你的设置是什么?nslcd (nss-pam-ldapd)nss-pam-ldapssd 的或者是其他东西?

相关内容