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

我最近设置gitolite,在那里用户通过ssh访问git的用户通过“gitolite”用户。

现在我想将它集成到LDAP中。 每个用户在LDAP中都有pubkey,如果他有“git”objectClass,他将能够通过ssh访问“gitolite”用户。

我知道可以将公钥存储在LDAP中,我不确定是否可以在基于objectClass的“gitosis”帐户中进行身份validation。

编辑:澄清,用objectClass git,用户“foobar”将能够通过sshlogin为“gitolite”

gitolite的作者增加了一些function来帮助支持外部密钥库和组员信息。 在CHANGELOG中searchLDAP。

要使用外部密钥存储,您的sshd需要支持通常的.ssh/authorized_keys文件( 这是在gitolite用户login时告诉sshd运行gl-auth-command的文件 )。

  1. closures正常的authkey生成(基于gitolite-admin存储库中的keydir ):
    $GL_NO_SETUP_AUTHKEYS = 0; 在你的.gitolite.rc
  2. 定期(任何时候一个密钥被改变,一个用户被添加等):
    1. 将密钥库中的所有SSH密钥解压缩到一个方便的临时目录(对密钥文件使用与正常的基于知识库的keydir相同的名称)。
    2. 运行gl-setup-authkeys使gitolite重build其authorized_keys文件的一部分。

请参阅为作者自己的描述引入gl-setup-authkeys的提交消息 。

使用外部定义的用户组有点麻烦,因为它通常涉及在sshdgl-auth-command之间插入另一个程序(组成员身份作为gl-auth-command的额外parameter passing)。 请参阅“用户组和LDAP /类似的工具” 。

如果你想尝试一些东西,可以让.ssh / authorized_keys2成为一个命名pipe道,然后编写一个查询LDAP的脚本/程序,执行适当的过滤,然后吐出authorized_keys键的内容。 我build议authorized_keys2,因为您可能已经使用authorized_keys。

你必须小心脚本(注意阻止写入,知道什么时候做一个新的查询等),但是如果你做得对,每次都会给你正确的答案。