セカイノカタチ

世界のカタチを探求するブログ。関数型言語に興味があり、HaskellやScalaを勉強中。最近はカメラの話題も多め

gitbucketで管理者のパスワードを変更時にミスると詰む(かも)

正確には、頑張れば復旧可能です。

メールによるパスワードリセットとかが無いので、つらかった。

出来事

  1. プライベートで運用しているgitbucketサーバーにて、管理者(自分自身)のパスワードを変更(確認入力とか無いので一発勝負)
  2. Sign out
  3. Sign in
  4. Sign inできない
  5. あれ。(・・?
  6. 手順1でtypo?(・・?
  7. _| ̄|○

復旧手順

github.com

↑まずは、このissueですが、サーバー上にあるので、GUIとか無理なんで、コマンドで行ける方法を探す。

rela1470.hatenablog.jp

↑このブログでSQLを発行する方法を知る。

Downloads

↑h2の配布元で、jarを取得。

※以下、gitbucketのデータディレクトリで作業

wget http://repo2.maven.org/maven2/com/h2database/h2/1.4.191/h2-1.4.191.jar

SQL文を準備。

$ cat > update.account.sql
update account set password='b1e439995fb20541c4738cf30ec22c6f0e8f6c8d' where user_name = 'hogehogeuser';

※ パスワードをSHA-1でハッシュする(Saltとかは無い)。

SHA1 online

gitbucketは停止する。

docker stop gitbucket1

SQL発行

java -cp h2-1.4.191.jar org.h2.tools.RunScript -url jdbc:h2:./data -user sa -password sa -script update.account.sql -showResults

gitbucket起動

docker start gitbucket1

フロント再起動

docker restart nginx1

治った。

まとめ

  • パスワード変更するときはtypoに気をつける
  • h2の使い方がよくわからなかった
  • そのうちgitbucketにパスワードリセット機能がつくかも