gitoliteで管理者の鍵をなくした時の対策

@nqounetです。

かなり久しぶりにgitolite を触る機会があったのですが、うっかり管理者用の鍵をなくしてしまった(環境が変わっていたのに鍵を移植していなかった)ので、gitolite -adminのpushができずかなり焦ってしまいました。

落ち着いて対処すれば大したことではないので、記録を残しておきます。

管理者用に鍵のペアを作成

まずは、新しく鍵のペアを作ります。

普段使っている鍵を用いると何かと不便なので、管理者(ここではadmin)用に新しい鍵を作成します。

ローカル環境で、ssh-keygenコマンドを使うのが良いでしょう。

1
$ ssh-keygen -t rsa -f ~/.ssh/gitolite-admin

これで、~/.ssh/gitolite-admin~/.ssh/gitolite-admin.pubというファイルが出来ます。

公開鍵をサーバーへ転送

gitoliteが動作しているサーバーの作業用ユーザーを使って、できたファイルをサーバーに転送します。

gitoliteが動作しているユーザーでログイン出来る場合は直接転送してもよいですが、おそらくそのような運用はしていないと思いますので、面倒ですが一旦作業用ユーザーを介することになるでしょう。

1
$ scp ~/.ssh/gitolite-admin.pub user@host:./admin.pub

この時に、ファイル名をadmin.pubに変更しておくと後で名前を変更する手間が省けます。

公開鍵をgitolite用のユーザーに渡す

転送が終わったら、sshでログインします。

ログインしたら、先ほどの公開鍵をgitolite用のユーザー(ここではgitolite)のホームディレクトリに移動します。ファイルの所有者を変更しておく必要もあります。

1
2
$ sudo mv admin.pub /home/gitolite
$ sudo chown gitolite:gitolite /home/gitolite/admin.pub

これでようやく準備が出来ました。

ユーザーを切り替えてgitoliteコマンド

gitoliteユーザーに切り替えて、adminの公開鍵を更新するコマンドを実行します。

1
2
$ sudo su - gitolite
$ /path/to/gitolite setup -pk admin.pub

gitoliteコマンドのsetupは、初期化だけでなく公開鍵の更新も行うことができます。

この時に気をつけるのは、公開鍵の名前がgitoliteでのユーザー名になることです。

gitoliteでは、gitolite-adminリポジトリのkeydirにユーザー用の公開鍵を入れておくのですが、setup -pk 公開鍵 とすることで、keydirに公開鍵を転送してcommitした事になります。

そのため、上記コマンドでadmin.pubを入れ替えることができる、というわけです。

gitoliteは慣れれば簡単

gitoliteは、次の2点さえ忘れなければ、仕組みも単純なので、プライベートなソースコード管理には最適です。

  • 管理ユーザーと一般ユーザーの鍵を別にしておく
  • 公開鍵の名前がユーザー名になる

大人の事情で、bitbucketgithubなどのサービスが使えない場合は是非お試しください。

参考になる資料

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy