2012-05-08 13 views
2

何かの理由で私のgitoliteはサンプル設定ファイルが付属していないので、誰かが私にコピーを見つけることができるなら、 、 お願いします!!私はgitoliteユーザーを理解するのを助けてください

keydir/ 
gitadmin.pub 
[email protected] 

私の問題は、gitoliteです:

とにかく、gitoliteの設定ファイルのフォーマットは十分に単純ですが、ここでは鉱山が

gitolite conf 
# please see doc/gitolite.conf.mkd for details on syntax and features 

@nmscDevs = [email protected] [email protected] [email protected] 
@buildMgr = [email protected] [email protected] 

repo gitolite-admin 
    RW+  = gitadmin [email protected] 

repo grindstone 
    RW+ = gitadmin 
    RW+ prod$ = @buildMgr 
    - prod$ = @nmscDevs 
    RW = @nmscDevs 

私はkeydirディレクトリのフォルダ内の複数の公開鍵を持っているからスニップです個々のユーザーに設定されているアクセス許可を無視しているようです。 gitadminユーザにフルコントロールを与えない限り、リポジトリ(読み取り、書き込みなど)には何も作用しません。それで、誰もがgitadminユーザーの権限を使っているようです。私はこの

git clone [email protected]:grindstone.git 

のようなレポのクローンを作成するが、私はImはパスワードが表示この

git clone '[email protected]'@server:grindstone.git 

ようなものでクローンを作成しようとします。個々のユーザーはサーバーにアカウントを持っていなければならないので、サーバーにsshできるのですか?

権限はどのように正確にgitoliteで動作しますか?私は、gitユーザーがサーバーにsshするためのアカウントを必要としていることを理解していました。その後、gitoliteが引き継ぎ、gitリクエストと一緒に渡された電子メールを使用して権限を判断します。私は何が欠けていますか?

ところで、ここに私の.ssh/configに

host server 
    user git 
    hostname server 
    identityfile ~/.ssh/gitadmin 

host server 
    user [email protected] 
    hostname server 
    identityfile ~/.ssh/id_rsa 

の更新です:私はこの

$ git clone [email protected]:testing.git 
Cloning into 'testing'... 
FATAL: R any testing gitadmin DENIED by fallthru 
(or you mis-spelled the reponame) 
fatal: The remote end hung up unexpectedly 

私を取得するクローンをしようとするとき 私は、gitoliteの最新バージョンにアップグレードしましたconfigファイルは次のようになります。

repo testing 
    RW+ = william_slepecki 

と私の.ssh設定は変更されていません。世界では、これはまだgitadminはレポであることを主張し、その理由ている理由以外に、私は私のログにこれを持って

2012-05-08.13:01:13  19027 ssh  ARGV=gitadmin SOC=git-upload-pack 'testing.git'  FROM=10.99.5.146 
2012-05-08.13:01:13  19027   access(testing, gitadmin, R, 'any'),-> R any testing gitadmin DENIED by fallthru 
2012-05-08.13:01:13  19027   trigger,Writable,access_1,ACCESS_1,testing,gitadmin,R,any,R any testing gitadmin DENIED by fallthru 

、ここでは私のグローバルGitの設定

[user] 
    name = Willie Slepecki 
    email = [email protected] 

のトップスニップですwilliam_slepeckiを使用していませんか?正確にこれは使用する名前を取得しますか?

+2

広範な[gitoliteのドキュメント](http://sitaramc.github.com/gitolite/master-toc.html)を読んでいましたか? [Stack Overflowは "キャッチオール"ではない](http://meta.stackexchange.com/a/128577/183347) – KurzedMetal

+0

私は持っているが、gitadminに完全な制御を与えない限り何も働かない理由は説明しないレポの – scphantm

+0

ユーザ名には '@'は使わないでください。または、エンコードしようとしました(%40)。しかし、私はまだそれを完全に避けるだろう。また、どのようなgitoliteのバージョンを使用していますか? – VonC

答えて

2

私はちょうどあなたの2つの主要なエラー指します:

第一エラー:Gitoliteはkeydirディレクトリで見つかったキーのユーザ部分だけ(「@」に以前のもの)を使用しています。
例:gitoliteは、[email protected][email protected]の1人のユーザー、william_slepeckiのみを認識します。ここで唯一のポイントは、このユーザーが2つの異なるキーで認証できることです。ユーザーにのみキーにアクセス許可を与えることはできません。

第二のエラー: あなたのgitoliteサービスがgitおそらく、唯一の通常のシステムユーザによって提供されているので、接続が[email protected]:repo.gitになされるべきである、gitoliteのユーザーはそう、ちょうどSSHキー、システムアカウントを必要とするか、または持っていません[email protected]:repo.gitに接続すると動作しません。

+0

よく、最新のバージョンにアップグレードしても、同じエラーが表示されるので、上記の詳細を掲載しました。 – scphantm

+0

@scphantmあなたの '.ssh/config'は全く意味を持ちません。あなたは同じ "ホスト"を2回定義しています。 – KurzedMetal

2

まあ、私の問題は数倍でした。

まず、gitadminキーの役割を誤解しました。私はそれがすべての開発者ワークステーション上にある必要があるサーバー上の実際のアカウントを持っている唯一のユーザーだと思った。それは間違っていた。 gitoliteはkeydirディレクトリのキーを取得し、pushのgit/.ssh/authenticated_keysファイルに追加します。これにより、keydirのすべてのキーがマシン上のgitユーザーとしてログインできるようになります。 gitユーザにはコンソールが関連付けられていないので、セキュリティホールはありません。

第2に、〜/ .ssh/confファイル。私は#1の仕組みが分からなかったので、gitコマンドの一部としてユーザ名として電子メールアドレスを何とか渡していると思っていました。一度私は#1を考え出し、私はgit @サーバーのユーザーをマップし、他のすべてのために私の通常を使用する設定ファイルをきれいにすることができた。

これらの2つの問題が理解され、解決されると、すべてのアクセス許可が正しく機能するようになりました。私は今、サーバーのgitadminユーザーキーを置き換えて開発者ステーションのものを無効にし、すべての開発者の設定を更新しました。経営陣は再び幸せです。

ありがとうございます。

+0

良いフィードバック、ありがとうございます。 +1 – VonC

+0

私も同様の問題がありました。以前は誤ったキーでインストールを実行していました。新しい鍵でgitolite setup -pkを使用していても(情報からの応答を得ることができる)、私は管理リポジトリへのアクセスが拒否されました。私はgitoliteのインストール全体を覗き込み、正しいキーでプロセスを再開し、すべてがうまくいきます。 – Errol

関連する問題