允许用户通过 ldap 和存储的公钥通过 ssh 连接到特定用户

允许用户通过 ldap 和存储的公钥通过 ssh 连接到特定用户

我最近设置了 gitolite,用户可以通过 ssh 以“gitolite”用户身份访问 git 存储库。

现在我想将其集成到 LDAP 中。每个用户在 LDAP 中都有公钥,如果他有“git”对象类,他就能够通过 ssh 访问“gitolite”用户。

我知道可以将公钥存储在 LDAP 中,但我不确定是否可以基于 objectClass 在“gitosis”帐户中允许身份验证。

编辑:需要澄清的是,使用 objectClass git,用户“foobar”将能够通过 ssh 以“gitolite”身份登录

答案1

作者吉托莱特添加了一些有助于支持外部密钥存储和组成员信息的功能。搜索变更日志对于 LDAP。

要使用外部密钥存储您的sshd需要支持通常的.ssh/authorized_keys文件(这是文件告诉sshd跑步gl-auth 命令当一个吉托莱特用户登录)。

  1. keydir关闭正常的 authkey 生成(基于存储库中的生成gitolite-admin):
    $GL_NO_SETUP_AUTHKEYS = 0;在您的.gitolite.rc.
  2. 定期(任何时候更改密钥、添加用户等):
    1. 将密钥库中的所有 SSH 密钥提取到某个方便的临时目录中(对密钥文件使用相同的名称,就像它们在正常的基于存储库的目录中一样keydir)。
    2. 跑步gl-设置-authkeys具有吉托莱特重建其文件部分authorized_keys

引入的提交消息gl-设置-authkeys供作者自己描述。

使用外部定义的用户组有点棘手,因为它通常涉及在sshdgl-auth 命令(组成员身份作为额外参数传递给gl-auth 命令)。 看“用户组和 LDAP/类似工具”

答案2

如果您想尝试一些不同寻常的方法,可以将 .ssh/authorized_keys2 设为命名管道,然后编写一个脚本/程序来查询 LDAP、执行适当的过滤,然后输出 authorized_keys 密钥的内容。我建议使用 authorized_keys2,因为您可能已经在使用 authorized_keys 了。

您必须小心使用脚本(注意阻止写入,知道何时进行新的查询等),但如果您做得正确,它每次都会给您正确的答案。

相关内容