SSHアクセスでGitサーバーを設定する

SSHアクセスでGitサーバーを設定する

クライアント証明書と一緒にsshとhttpsを介してgitリポジトリをホストするサーバーを設定したいと思います。私は素晴らしいGUIやそれに似たもの(Bitbucket、GitLabなど)を必要とせず、単にストレージホスティングのための最小限の設定をしたいと思います。

しかし、私はリポジトリ間のユーザーを分離したいと思います。

私はすでにhttpsケースの解決策とsshの迷惑な解決策を持っています。

マルチユーザーssh gitサーバー構成についていくつかの検索を行いましたが、私が見つけたガイドの基本的な前提は、すべてのリポジトリにすべてのユーザーがアクセスできることです。つまり、「git」ユーザーを作成し、すべてのユーザーの公開鍵を ~git/.ssh/authorized_keys に追加し、「git」ユーザーに git-shell を使用し、「git」ユーザーの下のすべてのリポジトリをホストします。

私が達成したいのは、管理者がSSHキーをプロジェクトに追加して明示的な権限を付与しない限り、デフォルトではユーザーがアクセスできない複数のリポジトリをホストすることです。

私は以前、システム内の各ユーザーに異なるアカウントを割り当て、共有のための一般的なグループ権限を使用してこれを達成しましたが、いくつかの理由で面倒です。

この機能を円滑に機能させるための一般的な理論は何ですか?

デフォルトのアイデアは "git" ユーザーを持ち、各ユーザーを ~git/authorized_keys に入れると仮定します。しかし、SSHが認証されると、すべてのストレージ権限を含む一部の外部ユーザーデータベースに認証情報を渡し、そのデータベースを使用して適切なファイルシステムアクセスチェックを実行します。

答え1

私は数年前にSVNでこれをしました。 Unixアカウントを設定しました。つまり、git@ ユーザーキーがに追加され~git/authorized_keys、ユーザーがログインすると、サーバーの実行に関する追加の内容(git-shellなど)が追加されます。

これまで4節でおっしゃった通りでした。

欠けているのは、各項目にユーザー名を知らせる~git/authorized_keys別のパラメータが渡されることです。その後、他のユーザーに対して適切な処置を取る必要があります。つまり、自分だけのユーザー哲学を持っているのです。git-shellgit-shell

答え2

見るhttps://github.com/sitaramc/gitoliteそれがあなたに効果があることを確認するために。

関連情報