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ですが、間違ってしまうと非常にめんどいことになります。
パスワードをあげたままにして、攻撃されまくってパブリッククラウドで相当な金額請求されたという話もよく聞きますし、気をつけたほうがよいでしょう。
ということで、みなさまもやらないよう気をつけてください!ではでは!