gitolite といえば、git リポジトリをたくさん作って管理するのにとても最適なソリューションなわけですが、公開鍵の設定とかも gitolite-admin というリポジトリを使って設定するようになってるんですよね。
この前、公開鍵の設定をするときに少しミスってしまいました。
keydir/user_name.pub に公開鍵を設定するのですが、複数の鍵をこのファイルに入れられると思っていたのですよね。
しかし、そううまくはいきませんでした。
$ git push Counting objects: 9, done. Delta compression using up to 3 threads. Compressing objects: 100% (5/5), done. Writing objects: 100% (5/5), 1.56 KiB, done. Total 5 (delta 0), reused 0 (delta 0) remote: Already on 'master' remote: WARNING: a pubkey file can only have one line (key); ignoring foo.pub remote: WARNING: a pubkey file can only have one line (key); ignoring bar.pubというわけでダメみたいです。
gitolite は、authorized_keys と違って、ひとつのファイルにひとつの鍵しか入れられないみたいです。
WARNING を出してきたくせに、reject されませんでしたが、もう一度修正して push してみると...
$ git push Permission denied (publickey). fatal: The remote end hung up unexpectedly(ノ∀`)アチャー
試しに root でログインして、/var/lib/gitolite/repositories/gitolite-admin.git を直接 clone して見ましたが、push しようとすると...
# git push -f Counting objects: 10, done. Delta compression using up to 3 threads. Compressing objects: 100% (6/6), done. Writing objects: 100% (6/6), 1.75 KiB, done. Total 6 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (6/6), done. remote: Use of uninitialized value in do "file" at hooks/update line 36. remote: Null filename used at hooks/update line 36. remote: error: hook declined to update refs/heads/master To /var/lib/gitolite/repositories/gitolite-admin.git ! [remote rejected] master -> master (hook declined) error: failed to push some refs to '/var/lib/gitolite/repositories/gitolite-admin.git'(ノ∀`)アチャー
と思っていたのですが、救いの手がちゃんと用意されていました。
# su - gitolite $ cd .ssh $ ls authorized_keys known_hosts old_authkeysちゃんと一つ前の公開鍵がここに設定されているんですよね。
これを書き戻すだけでどうにかアクセスできるようになりました。
$ cp old_authkeys authorized_keysめでたしめでたし。
0 件のコメント:
コメントを投稿