IT Office Nishimiyahara

個人用スマホから商用プログラミングまでなんでもお任せ下さい

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

   

@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などのサービスが使えない場合は是非お試しください。

参考になる資料

respo

respo link

ZenBackWidget

 - 情報技術について ,