38

うまくいけば、指示に従って gitolite をセットアップしました。すべてが計画どおりに機能しています。

ユーザー名の部分がどのように機能するかについて少し確信が持てず、ドキュメントを調べても役に立たなかった-おそらく単純なものが欠けている.

1 人の実在の人物が使用する 2 つのクライアント マシンがある場合、これらの各マシンのユーザー名は、dave と david としましょう。keydir と構成ファイルのキーを整理して、両方が同じユーザーを表すようにするにはどうすればよいですか? 認証時にこれを探すように見えるため、異なるクライアントマシンのユーザー名を接続する方法ではなく、dave@laptop、dave@desktop (と思う) というサフィックスを取得します (おそらく、user@host 情報を含む公開鍵のため) ?)

必要に応じて詳細をお伝えできますが、関係のない情報で皆さんを攻撃したくなかっただけです。

どうもありがとう。

4

8 に答える 8

52

ドキュメントによる現在の推奨方法

「最も簡単でわかりやすいのは、[/kedir 内の] 別のサブディレクトリ (alice.pub、home/alice.pub、laptop/alice.pub など) にキーを配置することです。」

参照: https://gitolite.com/gitolite/basic-admin.html#multiple-keys-per-user

古いやり方

次のことをどのように達成するかを尋ねている場合:

  1. デビッド (ホーム コンピューター)
  2. David (仕事用コンピューター)
  3. デビッド(ラップトップ

コンピューターごとに異なる ssh キーを使用して、キーを作成し (例: keygen "david@someemail.com")、公開キーを gitolite の keydir ディレクトリ (gitolite-admin/keydir) にコピーします。それを行うときは、キーdavid@homecomputer.pubに , david@workcomputer.pub, と名前を付けるだけdavid@laptop.pubです。キーをリポジトリに追加し ( git add keydir/.)、コミット ( git commit -m "added David's additional keys") しgit pushて、サーバーに戻します。

Gitolite は、別のキーであってもユーザー名 ( の前@) が変わらdavidず、そのユーザーがログインして ACL をdavid

お役に立てれば

john_home.pub john_work.pubgitolite リポジトリ (管理リポジトリ) を開き、キーの名前を変更しkedirjohn@work.pubコミットjohn@home.pubし、プッシュするシナリオを修正するには。これで、ユーザーjohnはどちらのマシンからでもログインでき、同じユーザー名を使用できます。

これが機能するためには、SSH キーの電子メール アドレスがすべてのユーザーのキーで同じである必要があることに注意してください。したがって、上記の例を使用すると、キー david@homecomputer.pubdavid@workcomputer.pub、およびdavid@laptop.puball に の電子メール アドレスが含まれている必要がありますdavid@foobar.com

上記はこれに対する「古い方法」であり、上記で述べたこととは逆に「メールアドレスの方法」でキーに名前を付けた場合、複雑になる可能性があります。無視してください(わかりやすくするために元のコメントを残しました)。

于 2011-12-02T15:13:13.727 に答える
11

Gitolite v3 の場合、少なくとも最も簡単な解決策は、ここに記載されているサブフォルダー システムを使用することですhttp://sitaramc.github.com/gitolite/users.html

Gitolite は keydir を再帰的に検索し、すべての .pub を 1 人のユーザーとして関連付けます。現在、WindowsラップトップとLinux開発マシンでサブフォルダーシステムを使用しており、正常に動作しています。

user@host 規則は複雑すぎるようです。

私はこのようなことをしています:

キーディレクトリ
 |--mfang
 | | |--laptop01
 | | | | |--mfang.pub
 | | |--linux01
 | | | | |--mfang.pub
 |...など
于 2012-11-08T02:26:49.827 に答える
4

gitolite v3.5.2-10-g437b497 (2013 年 9 月、コミット59c817d0 ) 以降、さらに簡単な解決策があります。

ukm、「ユーザー キー管理」の場合

ユーザー キー管理では、特定のユーザーがキーを追加および削除できます。

gitolite 管理者ユーザーが新しい ssh 公開鍵を追加できるだけでなく、他のユーザーも同様に追加できるようになると、委任のレベルを導入できます。

また、公開 ssh キーの追加/削除も容易になります。

" " で実際の動作を確認できますcontrib/t/ukm.t:

Gitolite のドキュメントには、そのトピックに関するセクションが含まれていますが、ukmより簡単です (セクション「複数のキーを管理したいユーザー」):

gitolite 管理者は、キーの 1 つを初期キーとして使用して gitolite ID を作成します。このキーは、あなたではなく、gitolite 管理者のみが管理できます。それは基本的にあなたがどの名前で gitolite に知られているかを決定します。

この ID に新しいキーを追加したり、必要に応じて削除したりできます

# The admin can add multiple keys for the same userid.
try "
ADDOK u5 admin u4\@example.org
ADDOK u5 admin u4\@example.org\@home
ADDOK u5 admin laptop/u4\@example.org
ADDOK u5 admin laptop/u4\@example.org\@home
";
于 2013-09-09T07:40:00.417 に答える
3

gitolite の管理者のキーディレクトリを数回再編成しましたが、どれが最適な編成方法なのかまだ判断できていません。いくつかの規則を守ることができれば、物事は確かに簡単になりますが、それが常に可能であるとは限りません. 幸いなことに、ギトライトは柔軟です。

一般に、すべてのキーを含む単一のフラットなディレクトリを使用することは好ま、名前付け規則 "user@host.pub"だけに頼って物事をまっすぐに保ちます。(これは他の回答で暗示されているようです?) 複数のホストに複数のキーがあり、単一の「実際の」ユーザーに複数のユーザー名がある場合 (または、2 つの異なるホスト上の 2 人の異なるユーザーに同じユーザー名がある場合)、混乱する可能性があります)。サブディレクトリを使用すると、物事を整理するのに役立ちます。任意の深さのツリーを使用しますが、通常は 1 つのレベルだけを使用します。

2 つの主なオプション (またはそれらの組み合わせ):

  1. 「実際の」ユーザーごとに 1 つのディレクトリ。各ディレクトリにはそのユーザーの複数のキーが含まれます (たとえば、通常はホストごとに 1 つ)。
  2. (許可された) ホストごとに 1 つのディレクトリ、そのホストで作業するユーザーごとに 1 つ (または複数) のキー。ユーザーは自分の秘密鍵を別のホストにコピーできますが、それは (私の場合) お勧めできません。いずれの場合も、サブディレクトリの名前は、キーが最初に生成されたホストにちなんで付けられます。

ユーザーごとに 1 つのサブディレクトリの例 (オプション #1):

conf
 |--gitolite.conf
keydir
 |--john.doe
 |    |--john@host1.pub
 |    |--john@host2.pub
 |    |--jdoe@host2.pub
 |    |--john.doe@company.com.pub
 |    |--tester@temp-vm43.pub
 |--will.rodgers
 |    |--wrodgers.pub
 |    |--wrodg1234@host2.pub
 |    |--will.rodgers@company.com.pub
 |    |--tester@temp-vm22.pub
 |...etc

ご了承ください:

  • ディレクトリ名 (keydir の下) は、gitolite には関係ありません。
  • ディレクトリ名は、電子メール アドレスやその他のグローバル ID など、普遍的に一意である必要があります。これにより、異なるホストで同じユーザー名を持つ可能性のある「git」ユーザーが許可されます。
  • 「user.pub」や「user@email.com.pub」などのキーは、複数のホスト間でユーザーによって共有される場合があります。ただし、これを行うことは、ポリシーに基づいて推奨されない場合があります。

一般的に、私はオプション #1 を好み、実際に使用します。オプション #2 の例をいくつか散りばめています。オプション #2 は、サーバーの出入り (おそらく VM のプロビジョニングとリサイクル) があり、ユーザー レベルではなくホスト レベルで物事を維持したい場合、イントラネットの自動化を簡素化できる可能性があります。廃止されたホスト上のキー (たとえば、短期間のテスト VM)。

gitolite の良いところは、keydir ディレクトリの (再) 編成がユーザーに影響を与えないことです。しかし、注意しないと、ユーザー (または自分自身) を簡単に (不注意で) ロックアウトしてしまう可能性があります。

于 2012-06-07T05:32:07.050 に答える
2

常に次のように接続します。

git clone gitoliteuser@gitoliteserver:reponame

あなたがどのユーザーであっても。Gitolite は、あなたが提供している公開鍵によってあなたを識別します。たとえば、このキーは dave.pub と呼ばれます。この公開鍵を使用して ssh 接続を介して行われることはすべて、構成ファイルで「dave」または「all」が使用されている場所に従って、gitolite によって精査されます。

名前と電子メールは、さまざまなマシンやさまざまなリポジトリで自由に設定できます。コミットにはその情報が含まれます。ただし、ssh に同じ公開/秘密キーを使用する場合、読み書きできるブランチ、ツリー、またはリポジトリは、管理リポジトリの構成ファイルで「dave」がどのように制限されているかによって決まります。

お役に立てれば。

于 2011-04-21T06:30:05.153 に答える
1

誰もがここで見逃しているか、少なくとも明確に答えていないように見える微妙な点があります。

OPは、2つの異なるプラットフォームで2つの異なるユーザー名と2つの異なる(関連付けられた)公開鍵を使用して同じ人物を処理する方法を尋ねました。

例えば。dave@platform_a.pub と david@platform_b.pub は両方とも、同じ実際の git ユーザーを表します。

gitolite.conf ファイルの "@known" (既知のユーザー) 行に dave と david の両方をユーザーとして追加し、両方のキーを keydir に入れるのは簡単ですが、それが 2 つかどうかを判断する方法はありません。別のユーザー、または同一人物。

例えば。「git Blame」は、dave と david を 2 人の別々のユーザーとして扱います。

OPの投稿を超えて、同じプロジェクトに取り組んでいる複数のDavidがいる場合、さらに複雑になりますか?

関係する Davids は、システムを解決する必要があると思います (または、お互いを非難することに満足している ;-)。

于 2012-05-18T01:38:52.603 に答える
1

サーバー上の 1 人のユーザーの下で gitolite をインストールします。通常git、SSH 接続文字列ではgit@servername、Git ユーザー アカウントに接続するために常に明示的に使用します。次に、Gitolite はあなたが提供している公開鍵を見て、設定でそれを見つけ、あなたが関連付けられたユーザーであるかのように扱います。

于 2011-04-20T17:39:47.510 に答える
0

Gitoliteは、ssh強制コマンドを使用して認証を行います。gitoliteリポジトリにアクセスできるすべてのユーザーは、gitoliteがインストールされている場所でログインします。フックはkeydirで新しいキーを取得し、強制コマンドを使用するように構成された承認済みキーファイルに追加します。

ユーザーはパラメーター付きのgitoliteシェルを使用する必要があり、そのパラメーターはユーザー名です。関連するフックの次の部分は、ファイルパスを取得してユーザーに割り当て/、名前にが含まれるすべてのディレクトリとファイルを削除します。残っているものは、それが終わる限りユーザー名になり、少なくとも1つの追加文字がある限り、サフィックスの前にあるシングルサインオン.pubは無視されます。@.pub

my $user = $f;
$user =~ s(.*/)();                # foo/bar/baz.pub -> baz.pub
$user =~ s/(\@[^.]+)?\.pub$//;    # baz.pub, baz@home.pub -> baz

これにより、次のような機能が提供されます。

keydir
  |--host1
       |--dave.pub
       |--david.pub
  |--host2
       |--dave.pub

ディレクトリは任意ですが、組織的な目的で、ホストを使用して構造を提供します。最終的に2人のdaveユーザーと1人のユーザーになりdavidます。

私は次のような構成を使用します:

keydir
  |--steve
       |--steve@example.com@laptop.pub
       |--steve@example.com@desktop.pub
  |--services
       |--jenkins
            |--jenkins@master-buildhost.pub
            |--jenkins@slave-buildhost.pub
       |--redmine
            |--redmine@dev-server.pub
       |--jira
            |--jira@dev-alias.pub

繰り返しますが、ディレクトリ構造は重要ではありません。これにより、ユーザー、、、、steve@example.comおよびが得られます。ユーザーには、ユーザーと同様に2つのキーがあります。複数のユーザーがいる場合は、おそらく、steveキーディレクトリを含むusersサブディレクトリがあります。jenkinsredminejirasteve@example.comjenkins

于 2012-06-19T04:07:04.577 に答える