Gitolite가 LDAP에서 SSH 키를 검색하도록 만들기

Gitolite가 LDAP에서 SSH 키를 검색하도록 만들기

내가 달성하려는 목표에 대해 이해하는 데 문제가 있는 것 같습니다.

이제 현재 작동하는 것부터 시작해 보겠습니다(설명된 모든 서버는 CentOS 7을 실행하고 있습니다).

  • 사용자의 공개 키를 포함하는 OpenLDAP 서버
  • 사용자가 개인 키(ssh 명령 사용) 덕분에 연결할 수 있도록 허용하는 OpenSSH 데몬을 실행하는 "데이터" 서버

그리고 이제 나의 최종 목표는 다음과 같습니다.

  • OpenLDAP 서버에서 사용자의 공개 키를 가져오는 gitolite 서비스("데이터" 서버)

나는 이것을 에서 찾았습니다.Gitolite의 변경 내역:

(몇 가지 contrib 스크립트 - IPA 기반 LDAP 서버에 그룹 멤버십 쿼리 및 사용자 키 관리)

그래서 내가 원하는 것을 이룰 수 있을 거라 생각했는데 어떻게 해야 할지 모르겠어요...

LDAP 서버에 쿼리하는 것도 가능하다는 것을 읽었습니다.그룹 정보 가져오기. 그래서 저는 공개 키를 사용하여 동일한 작업을 수행하는 것이 가능하다고 믿고 싶습니다.

나는 많은 링크를 통해 여행하지만 내 문제를 해결하는 것을 찾을 수 없습니다... 누군가가 나에게 작은 힌트라도 준다면 좋을 것입니다 :)

좋은 하루 되세요 !


추신: 저는 많은 코드를 읽고 쓰는 것을 두려워하지 않는다는 점을 덧붙이고 싶었습니다. 그리고 개인적인 목적으로 지톨라이트를 보관하는 것이 더 나을지라도 지톨라이트가 아닌 다른 것을 사용하는 것이 해결책이라면 문제가 되지 않습니다.


편집1:

따라서 현재 작동하는 방식은 다음과 같습니다.

다음 명령을 사용하여 기본 test.git 저장소를 복제하려고 할 때:

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

다음과 함께~/.ssh/config:

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가 그에 대한 어떤 것도 제공하지 않고 오히려 외부 요인에 의존하는 것처럼 읽습니다.

예를 들어 , LDAP 서버에 대해 인증하도록 sssd를 설정한 다음 를 사용할 수 있습니다 sss_authorized_keys.

문서는 쉽게 찾을 수 있어야 합니다.

관련 정보