2

gitolite は、gitolite 経由で git にアクセスするリモート ユーザーを gitolite ユーザー (レポ ユーザー) にどのようにマップしますか?.これは、keydir の公開鍵ファイル名からのものですか?. 公開鍵ファイルに username.pubという名前を付けることは必須ですか? ありがとう。

4

1 に答える 1

2

ファイルのパラメーターとして使用されるリポジトリに登録されている公開鍵の名前です (リポジトリのプッシュで新しいユーザーを検出するときに gitolite によって生成されます) 。gitolite-admin~git/.ssh/authorized-keysgitolite-admin

その ~git/.ssh/authorized-keys ファイルに登録されているユーザー公開 ssh キーを使用して呼び出しが行われた場合、ssh 呼び出しごとに gitolite-shell が呼び出されます。
その呼び出しgitolite-shellは、ユーザー名をパラメーターとして使用して行われます。

詳細については、「gitolite が ssh を使用する方法」を参照してください。

ユーザーを特定のコマンドに制限することは、gitolite にとって非常に重要です。
ファイル形式を読んman sshdで探すとauthorized_keys、公開キー行に追加できる多くのオプションが表示され、着信ユーザーをさまざまな方法で制限します。特に、 「着信ユーザーが何を求めているかに関係なく、代わりにこのコマンドを強制的に実行する」というオプション
に注意してください。command=

また、authorized_keys ファイルに多数の公開鍵 (つまり、行) がある場合、各行に異なるオプション セットと command= 値を含めることができることに注意してください。

この command= オプションがないと、ssh デーモンは単純にシェルを提供しますが、これは gitolite キーに必要なものではありません (ただし、シェルを取得するために使用する他のキーがある場合もあります)。

注: そのcommand=メカニズムはssh forced-commandです。

ssh での強制コマンド

これがギトライトを機能させるバックボーンです。これを理解してください。

authorized_keys ファイルを調べると、次のようなエントリが表示されます (もちろん、両端を切り落としました。かなり長い行です)。

command="[path]/gitolite-shell sitaram",[more options] ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA18S2t...
command="[path]/gitolite-shell usertwo",[more options] ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArXtCT...

まず、このファイル内のどの公開鍵が着信ログインと一致するかを調べます。
一致が見つかると、その行に指定されたコマンドが実行されます。たとえば、ログインすると実行されます[path]/gitolite-shell sitaram
したがって、最初に注意すべきことは、そのようなユーザーは「シェル アクセス」を取得しないということです。これは良いことです。

ただし、コマンドを実行する前に、sshd はSSH_ORIGINAL_COMMAND、ワークステーションが送信した実際の git コマンドを含む という環境変数を設定します。これは、許可された鍵ファイルに
その部分がなかった場合に実行されるコマンドです。command=

制御を取得するgitolite-shellと、最初の引数 (" sitaram"、" usertwo" など) を調べて、ユーザーが誰であるかを判断します。次に、SSH_ORIGINAL_COMMAND変数を調べて、アクセスするリポジトリと、読み取りまたは書き込みのどちらを行っているかを調べます。

于 2012-10-19T17:36:27.830 に答える