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

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

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

LDAP 验证后:

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

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

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

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

https://serverfault.com/questions/653792/ssh-key-authentication-using-ldap

https://serverfault.com/questions/579341/combination-of-ssh-key-auth-and-two-factor-authentication

答案1

首先,授权密钥不应存储在用户的主目录中,原因有二:

  1. 不应允许用户自己添加随机授权密钥。
  2. 首次登录时,如果主目录尚不存在,则授权密钥应该已经存在。

你应该设置授权密钥文件像这样让sshd通过辅助同步脚本从放置密钥的锁定目录中读取授权密钥:

AuthorizedKeysFile /etc/ssh/authorized_keys/%u

其中一个变体是使用授权密钥命令触发对授权密钥的动态检索。请记住,在您必须登录时,网络可能会中断或系统无法访问。

如果员工离开,您还可以移除授权密钥。

如果你仍然想强制使用基于密钥和密码的身份验证,你可以设置身份验证方法像这样:

AuthenticationMethods publickey,password

请注意,使用逗号而不是空格作为分隔符。

(如果你不想自己处理所有细节,你可以设置一个现成的解决方案,例如免费IPAssd 的作为 NSS/PAM 客户端或我的Æ-DIR主机用作 NSS/PAM 客户端。

相关内容