gitoliteのトラブルシューティング

Ken published on
4 min, 754 words

Categories: misc

改めて、gitoliteのインストール手順とトラブルシューティング。

gitolite簡単インストール

まずは鍵の準備。 これはクライアントで作業する。
ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitolite
scp ~/.ssh/id_rsa.gitolite.pub gitserver:

続いて、サーバーで行う作業。

mv id_rsa.gitolite.pub yourname.pub

このyourname.pubはクライアントのユーザ名.pub($USER.pub)にする。

■ sitaramc/gitolite - GitHub https://github.com/sitaramc/gitolite オフィシャルサイトに書いてあるまんま。

git clone git://github.com/sitaramc/gitolite
cd gitolite
src/gl-system-install
cd
gl-setup ~/yourname.pub

gl-setupの前にcdでホームディレクトリに移動しているのは、authorized_keysが反映されなかったから。 これはうちだけの現象かなぁ?記憶違いかなぁ? gl-setupまで実行したら、~/.ssh/authorized_keysの中を確認しておくといい。

# gitolite start command="... yourname"... # gitolite end
こんな記述が含まれていたらOK! ただし、既にgitoliteユーザでsshログインをする設定がしてあって、 "# gitolite start" の前にgitoliteと同じキーがある場合は注意。
ssh-rsa ABC... # gitolite start command="/home/gitolite/... ssh-rsa ABC... # gitolite end
このような場合はひとつめの公開鍵が利用され、gitoliteのcommandなどが無効になってしまうのでエラーとなる。

トラブルシューティング

gitoliteを使っていて、以下のようなエラーが出るときにチェックしておいた方がいいところ。
Cloning into gitolite-admin...
fatal: 'gitolite-admin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

repositories/gitolite-adminはclone出来るんだけど、push出来無いってのもほぼ同様の原因が多そう。

この場合、sshが期待通りに機能していない可能性が高い。 確認ポイントはこの3つ。これが全てではないけど、自分の知っている範囲で。

  • authorized_keys
  • ~/.gitolite/keydir/yourname.pub
  • .ssh/config

ひとつめは既に上に書いた通りgitolite start〜gitolite endの記述があれば大丈夫だと思う。 ふたつめはyourname.pubのファイルがkeydirにあることを確認。 みっつめはクライアントの.ssh/configファイルの確認。 configファイルは存在しなくても問題ないんだけど、sshを便利に使うための設定ファイルだと思っていればよい。 なぜこれを確認するかというと、gitoliteはsshを使うため、接続時の秘密鍵を間違って使っている可能性があり、それをconfigファイルで正そうという意図。

Host gitolite     User gitolite     Hostname gitserver     IdentityFile ~/.ssh/id_rsa.gitolite
例えば、このような設定を記述してあったとする。 本来は、
git clone gitolite@gitserver:gitolite-admin
で接続するが、config設定がしてある場合は次のコマンドで接続可能。
git clone gitolite:gitolite-admin
gitoliteを使おうとする人は、既に秘密鍵(id_rsa)を持ってそうだから、設定しておいた方が無難かも?