让 Gitolite 从 LDAP 检索 ssh 密钥

让 Gitolite 从 LDAP 检索 ssh 密钥

我认为我对于自己想要实现的目标存在一些理解问题......

那么,让我们从当前的工作开始(所有描述的服务器都运行 CentOS 7):

  • 包含用户公钥的 OpenLDAP 服务器
  • 运行 OpenSSH 守护进程的“数据”服务器,允许用户使用私钥进行连接(使用 ssh 命令)

现在,我的最终目标是:

  • gitolite 服务(在“数据”服务器上),从 OpenLDAP 服务器获取用户的公钥

我在gitolite 的更新日志

(几个贡献脚本 - 查询基于 IPA 的 LDAP 服务器以获取组成员身份和用户密钥管理)

所以我认为可以实现我的愿望,但我不知道如何做......

我读过也可以查询 LDAP 服务器获取群组信息。所以我相信用公钥也能做同样的事情。

我浏览了很多链接,但找不到可以解决我的问题的东西...如果有人能给我一点提示,那就太好了:)

祝你今天过得愉快 !


附言:我只是想补充一点,我并不害怕阅读/编写大量代码。如果你的解决方案是使用 gitolite 以外的其他东西,那也不是问题,即使出于个人目的保留 gitolite 会更好。


编辑1:

目前的情况如下:

当我尝试使用此命令克隆默认的 testing.git 存储库时:

git clone ssh://git@dataserver/testing.git

使用以下内容〜/.ssh /配置

host dataserver
    hostname dataserver
    Identityfile ~/.ssh/user
    User git

我的终端告诉我这个:

Cloning in 'testing'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists

但是如果我在文件夹中有一个我的用户的公钥(user.pub)keydir,那么一切都很好:

git clone ssh://git@dataserver/testing.git
Cloning in 'testing'...
Enter passphrase for key '/home/user/.ssh/user_rsa:
warning: it seems that you've cloned a bare repository.
Verifying connectivity... done.

git 存储库在这里:

ls -l | grep testing
drwxrwxr-x 3 user user 4096 mars 23 11:03 testing

编辑2:

我只是添加我的数据服务器如何查询 OpenLDAP 来获取用户的公钥(以防万一)。

在 /etc/ssh/sshd_config 文件中,输入:

AuthorizedKeysCommand /usr/bin/ssh-keyldaps %u
AuthorizedKeysCommandUser nobody

在 /usr/bin/ssh-keyldaps 中:

ldapsearch       -H ldaps://ldapserver \
                 -b dc=my,dc=domain \
                 -x -LLL \
                 -o ldif-wrap=no \
                 "(&(uid=$uid)(sshPublicKey=*))" 'sshPublicKey' |
                 sed -n 's/^sshPublicKey:\s*\(.*\)$/\1/p'

我排除了一些行,因为它们在这里只是为了记录目的。

由于这个配置,所有在 LDAP 中注册的用户都可以sshPublicKey通过他们的私钥登录数据服务器。

答案1

AuthorizedKeysCommandsshd_config可能想看一下。文档片段读起来好像 gitolite 没有附带任何内容,而是依赖于外部因素。

sss_authorized_keys例如,您可以设置 sssd 来针对 LDAP 服务器进行身份验证,然后使用。

文档应该容易被找到。

相关内容