自分が何を達成したいのか理解できない問題があるように思います...
それでは、現在動作しているものから始めましょう (説明されているすべてのサーバーは CentOS 7 を実行しています)。
- ユーザーの公開鍵を含むOpenLDAPサーバー
- OpenSSH デーモンを実行する「データ」サーバー。ユーザーは秘密鍵 (ssh コマンドを使用) を使って接続できます。
そして今、私の最終目標は:
- OpenLDAP サーバーからユーザーの公開鍵を取得する gitolite サービス (「データ」サーバー上)
私はこれを見つけましたgitolite の変更履歴:
(いくつかの貢献スクリプト - IPA ベースの LDAP サーバーにグループ メンバーシップを照会し、ユーザー キーを管理します)
だから、自分が望むことを達成できるかもしれないと思ったのですが、方法がわかりません...
LDAPサーバーに問い合わせて、グループ情報を取得する. だから、公開鍵でも同じことが可能だと信じたいのです。
たくさんのリンクをたどってみたのですが、問題を解決できるものが見つかりません... 誰かが少しでもヒントをくれると嬉しいです :)
良い1日を !
PS: 大量のコードを読んだり書いたりすることに抵抗はないということを付け加えておきたいと思います。また、個人的な目的であれば gitolite を維持したほうがよいとしても、gitolite 以外のものを使用するという解決策でも問題ありません。
編集1:
現状では、次のように動作します:
次のコマンドでデフォルトの testing.git リポジトリをクローンしようとしています:
git clone ssh://git@dataserver/testing.git
以下設定ファイル:
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 にクエリを実行してユーザーの公開キーを取得する方法を追加しています。
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
AuthorizedKeysCommand
おそらく、sshd_config
あなたが見たいのは です。ドキュメントの抜粋を読むと、gitolite にはそのための機能が何も付属しておらず、むしろ外部要因に依存しているようです。
sss_authorized_keys
たとえば、LDAP サーバーに対して認証するように sssd を設定し、 を使用することができます。
ドキュメントは簡単に見つけられる必要があります。