6

NAS で空の git リポジトリを初期化することができました。新しい公開キー「foo.pub」を生成し、それをコピーして keydir/ に貼り付け、それをコミットして NAS にプッシュすることで、新しいユーザーを追加しようとしました。 .

まず、ファイル:

これが私の ~/.ssh/config ファイルです:

Host root
    HostName iptonas
    User root
    Port 123        

Host foo
    HostName iptonas
    User foo
    Port 123
    identityfile ~/.ssh/foo

NAS から gitolite-admin のコピーを取得しました。

git clone ssh://root/gitolite-admin

私は得る:

Cloning into 'gitolite-admin'...
remote: Counting objects: 12, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 12 (delta 1), reused 0 (delta 0)
Receiving objects: 100% (12/12), done.
Resolving deltas: 100% (1/1), done.

ここに私の gitolite.conf ファイルがあります:

repo gitolite-admin
    RW+     =   git

repo testing
    RW+     =   @all

repo newrepo
    RW+     =   foo
    RW+     =   bar

以下を使用して gitolite-admin のコピーをプッシュしたとき:

git push root:gitolite-admin

私は得る:

Counting objects: 10, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (6/6), 1.02 KiB, done.
Total 6 (delta 0), reused 0 (delta 0)
remote: Initialized empty Git repository in /root/repositories/newrepo.git/
To root:gitolite-admin
   897113c..e7e2daf  master -> master

さて、新しいレポにプッシュしようとすると

実行しようとすると:

git clone foo:newrepo

私は得る:

Cloning into 'newrepo'...
foo@iptonas's password: 
fatal: 'newrepo' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

実行しようとすると:

git clone root:newrepo

私は得る:

Cloning into 'newrepo'...
FATAL: R any newrepo git DENIED by fallthru
(or you mis-spelled the reponame)
fatal: The remote end hung up unexpectedly

何が間違っているのかわかりませんか?

私は次の指示に従っています: http://www.nineproductions.com/linux/53-gitolite-hosting.html 「リポジトリとユーザーの追加」の下

4

1 に答える 1

12

id_rsa.pubこれらの手順では、 Gitoliteのインストール時に使用されるキーを持つユーザーを使用したクローン作成について説明しています。

したがって、アカウントには、' 'ユーザー(リポジトリのクローンを作成できる唯一のユーザー)を宣言するときにgitoliteが使用するキーとキーが含まれて~/.sshいる必要があります。id_rsaid_rsa.pubgitgitolite-admin

ここで、ユーザーを追加するには、ファイルでそのユーザーを宣言する必要があるだけでなく、ローカルリポジトリ' 'ディレクトリにそのユーザーgitolite.confの公開鍵を追加する必要があります。gitolite-adminkeys

  • スティーブ・フランコに、「<code>ssh-keygen-tdsa」</li>を使用して新しい公開鍵と秘密鍵のペアを生成するように依頼します。
  • スティーブ・フランコに、彼が生成したばかりの公開鍵を送ってくれるように頼みます
  • 公開鍵の名前をからに変更しid_dsa.pubますsfranko.pub
  • sfranko.pubキーをgitolite-admin/keydirディレクトリにコピーします

プッシュバックする前にこれらの両方の操作を行うgitolite-adminと、Gitoliteはその新しいユーザーを宣言し、あなたgit clone foo:newrepoは機能します。

git以前に推奨したアカウントでGitoliteのインストールを行った場合は、構成ファイルに次の情報が含まれている必要があります。

Host git
    HostName iptonas
    User git
    Port 123
    Identityfile ~/.ssh/git

そして行きますgit clone git:gitolite-admin

rootアカウントを宣言/追加するために、サーバー側でのインストールの開始時にのみ表示/使用する必要がありgitます。その後、プロセスのどこでも
使用/表示しないことを強くお勧めします。root


実際、私は2つのキーセットを生成したので、私のフォルダ~/.sshには現在、、、、がありid_rsaます。id_rsa.pubid_fooid_foo.pub

フォルダには次の~/.sshものが含まれている必要があります。

git、、、、git.pub_ id_foo_id_foo.pub

Gitoliteは、公開鍵の名前の後に行われる認証に基づいて認証メカニズムを確立します

繰り返しますが、サーバー側では、引数としてa /tmp/git.pub(ではなく/tmp/id_rsa.pub)を使用して、「git」のようなユーザーとしてgitoliteのインストールを行う必要があります。


ここでは多くの混乱があるので、要約しましょう。Gitoliteはsshに基づいています
つまり、サーバー側(ここでは「git」)に1つのアカウント(ここではGitoliteサーバーになります)が必要です。このアカウントには、~git/.ssh/authorized_keysファイルにすべてのGitolite管理者/ユーザーの公開鍵が記録されます。

クライアント側(ユーザーfoo)では、(少なくとも最初のユーザーの場合)gitからの公開鍵と秘密鍵、およびfooからの公開鍵を持っている必要があります。

ファイルには次の~foo/.ssh/configものが含まれます。

Host gitadmin
    HostName iptonas
    User git
    Port 123        
    identityfile ~/.ssh/git

Host foo
    HostName iptonas
    User git
    Port 123
    identityfile ~/.ssh/foo

ssh通信のユーザーは常にgitであることに注意してください!常に。のようなsshアドレスを介してGitoliteサーバーに接続しますssh://git@iptonas:123/arepo
ただし、選択できるSSHキーが複数あるため、代わりに次のように入力できます。

  • git clone gitadmin:gitolite-admin、 また
  • git clone foo:newRepo

最初のコマンドを使用すると、リポジトリのクローンを作成できますgitolite-admin(gitpublicおよびprivatesshキーを使用してクローンを作成するため、これを実行する権限があります)。
そのローカルクローンを使用してfoo.pub、ディレクトリに配置し、ファイルでkeysを宣言できます。 次に、そのリポジトリをプッシュバックします(そして、Gitoliteはその魔法を実行し、新しいリポジトリを作成し、によって発行されたsshコマンドをインターセプトするための強制コマンドスクリプトを使用して、のコンテンツを追加します)。newRepoconfig
foo.pub~git/.ssh/authorized_keysfoo

gitadmin(公開鍵/秘密鍵に''という名前が付いている場合でも、gitではなくsshショートカット''に名前を付けることをお勧めします。これはgit.xxx、' 'で行うsshコマンドの意図gitadminをよりよく伝えるためです。gitアクセス権を管理します)

2番目のコマンドを使用すると、のクローンを作成newRepoして作業することができます。

ご了承ください:

  • ssh gitadmin、 また
  • ssh foo

ファイルで定義されているように、gitoliteバージョンと各sshショートカット' gitadmin'および' 'で使用されるsshキーに関連付けられた権限が表示されます。foo~foo/.ssh/config

于 2012-06-01T04:00:33.217 に答える