gitoliteのトラブルシューティング
改めて、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-admingitoliteを使おうとする人は、既に秘密鍵(id_rsa)を持ってそうだから、設定しておいた方が無難かも?