カイワレの大冒険 Third

技術的なことや他愛もないことをたまに書いてます

Githubにpushしてしまったパスワードを可能な限り抹消する

昔やってしまったのですが、パスワードを社内版Githubにpushしてしまったことがあり、そのときどう対応したか記録に残しておきたかったので、備忘録として残しておきます。

結論から言うと完全には消せなく、パスワード作りなおしたほうがいいので、絶対やらないようにしましょう。くそめんどいです。

まず、パスワードファイルを間違ってpushしてしまったとします。

$ echo "this is password" > password
$ git add password
$ git commit -m "add password"

$ git log -1 -p
Thu Nov 26 19:05:30 2015 +0900 af1f9ba (HEAD -> master, origin/master) add password  [masuda-kenichi]
diff --git a/password b/password
new file mode 100644
index 0000000..17d1fa7
--- /dev/null
+++ b/password
@@ -0,0 +1 @@
+this is password

$ git push origin master

そうすると、

https://github.com/masudaK/password_sample/blob/master/password

というようなURLでもアクセスできてしまうし、以下のようなコミットハッシュでも辿れる。

https://github.com/masudaK/password_sample/commit/af1f9bac0ea70653f55a9bebd26d00fcf897c72c

そんで困ったので、どうやって消すのか。

まず、以下のコマンドを叩きます。

$ git filter-branch --index-filter 'git rm --cached --ignore-unmatch password'  --prune-empty --tag-name-filter cat -- --all
Rewrite af1f9bac0ea70653f55a9bebd26d00fcf897c72c (2/2)rm 'password'

Ref 'refs/heads/master' was rewritten
Ref 'refs/remotes/origin/master' was rewritten

passwordという文字列のところは、「任意のファイル名」に変えてください。

そうすると、

% ls -alF
total 8
drwxr-xr-x   4 masudaK  1796139  136 11 26 19:07 ./
drwxr-xr-x   8 masudaK  1796139  272 11 26 19:04 ../
drwxr-xr-x  14 masudaK  1796139  476 11 26 19:08 .git/
-rw-r--r--   1 masudaK  1796139   18 11 26 19:04 README.md

のようにファイルが消えます。

なのでpushしましょう。forceじゃないとダメなので、気をつけてください。

$ git push origin master -f
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:masudaK/password_sample.git
 + af1f9ba...0b8aa19 master -> master (forced update)

あとは、

https://github.com/masudaK/password_sample/blob/master/password

などにアクセスして確認しましょう。消えているはずです。

しかしながら、以下のような感じで証拠は残っています。

$ git log -1 -p
Thu Nov 26 19:04:40 2015 +0900 0b8aa19 (HEAD -> master, origin/master) first commit  [masuda-kenichi]
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..cfc4253
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+# password_sample

また、

https://github.com/masudaK/password_sample/commit/af1f9bac0ea70653f55a9bebd26d00fcf897c72c

のようなコミットハッシュにアクセスすると、アクセスできてしまいます。

そのため、やろうと思えば、結局たどり着けてしまうのです。URL決め打ちでアクセスする人はいないと思いますが、やはり怖いので、パスワード設定しなおしたほうがよいでしょうね。

終わりに

非常に便利はgithubですが、間違ってしまうと非常にめんどいことになります。

パスワードをあげたままにして、攻撃されまくってパブリッククラウドで相当な金額請求されたという話もよく聞きますし、気をつけたほうがよいでしょう。

ということで、みなさまもやらないよう気をつけてください!ではでは!

Gitのオススメ記事