@nqounetです。
かなり久しぶりにgitolite
を触る機会があったのですが、うっかり管理者用の鍵をなくしてしまった(環境が変わっていたのに鍵を移植していなかった)ので、gitolite
-adminのpushができずかなり焦ってしまいました。
落ち着いて対処すれば大したことではないので、記録を残しておきます。
管理者用に鍵のペアを作成
まずは、新しく鍵のペアを作ります。
普段使っている鍵を用いると何かと不便なので、管理者(ここではadmin)用に新しい鍵を作成します。
ローカル環境で、ssh-keygen
コマンドを使うのが良いでしょう。
|
|
これで、~/.ssh/gitolite-admin
と~/.ssh/gitolite-admin.pub
というファイルが出来ます。
公開鍵をサーバーへ転送
gitolite
が動作しているサーバーの作業用ユーザーを使って、できたファイルをサーバーに転送します。
gitolite
が動作しているユーザーでログイン出来る場合は直接転送してもよいですが、おそらくそのような運用はしていないと思いますので、面倒ですが一旦作業用ユーザーを介することになるでしょう。
|
|
この時に、ファイル名をadmin.pub
に変更しておくと後で名前を変更する手間が省けます。
公開鍵をgitolite用のユーザーに渡す
転送が終わったら、sshでログインします。
ログインしたら、先ほどの公開鍵をgitolite
用のユーザー(ここではgitolite
)のホームディレクトリに移動します。ファイルの所有者を変更しておく必要もあります。
|
|
これでようやく準備が出来ました。
ユーザーを切り替えてgitoliteコマンド
gitolite
ユーザーに切り替えて、adminの公開鍵を更新するコマンドを実行します。
|
|
gitolite
コマンドのsetupは、初期化だけでなく公開鍵の更新も行うことができます。
この時に気をつけるのは、公開鍵の名前がgitolite
でのユーザー名になることです。
gitolite
では、gitolite-admin
リポジトリのkeydir
にユーザー用の公開鍵を入れておくのですが、setup -pk 公開鍵
とすることで、keydir
に公開鍵を転送してcommit
した事になります。
そのため、上記コマンドでadmin.pub
を入れ替えることができる、というわけです。
gitoliteは慣れれば簡単
gitolite
は、次の2点さえ忘れなければ、仕組みも単純なので、プライベートなソースコード管理には最適です。
- 管理ユーザーと一般ユーザーの鍵を別にしておく
- 公開鍵の名前がユーザー名になる
大人の事情で、bitbucket
やgithub
などのサービスが使えない場合は是非お試しください。