我想启用以下功能: AWS 中的 Linux ec2 实例对当前在盒子上没有主目录的用户执行 LDAP 身份验证。我在 AWS 中有一个可用的 openLDAP 来完成这项任务
一旦 LDAP 认证:
- 将创建用户的主目录
- 用户的公共 ssh 密钥是从他们
sshPublicKey
在 LDAP 中的属性中检索的,他们只有在他们的本地 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
首先,授权密钥不应存储在用户的主目录中,原因有二:
您应该像这样设置AuthorizedKeysFile让sshd从锁定的目录中读取授权密钥,您可以通过辅助同步脚本在该目录中放置密钥:
它的一个变体是使用AuthorizedKeysCommand来触发授权密钥的一些动态检索。请记住,在您必须登录时,网络可能已关闭或系统无法访问。
如果员工离开,您还可以删除授权密钥。
如果您仍想强制使用基于密钥和密码的身份验证,您可以像这样设置AuthenticationMethods:
请注意用作分隔符而不是空格的逗号。
(如果你不想自己处理所有细节,你可以设置一个现成的解决方案,比如FreeIPA和sssd作为 NSS/PAM 客户端,或者我的Æ-DIR和aehostd用作 NSS/PAM 客户端。)