GitHubの2段階認証の設定をする(SMS編)

GitHubの利用頻度が上がってきたのもあって、2段階認証かけました。

brute forceアタックなどに対する最低限のセキュリティはGitHub側でやってくれているとは思いますが、どこからパスワードが漏れるかわからないのですからねw

設定

設定自体は5分もあれば終了します。

設定画面へ

まずはWebからGitHubにログインをし、「Setting」から設定画面へ遷移。

左側のメニューにある「Security」をクリック。

「Enable two-factor authentication」ボタンをクリック。

SMS認証

Googleが提供する2段階認証アプリで行うか、SMS認証にするか聞いてきます。 ボタンの感じからアプリがおすすめのようですが、今回はSMS認証にします。スマホが壊れてもSMS認証であればSIMさえ何とかなれば救済できるので個人的にはSMSを選択することが多いです。

まぁ…SMSは送信側が通信料を負担することになりますからね。日本の場合1通あたり10円前後かかりますので10万人が利用するとそれだけで100万円のコスト増。GitHubのお財布が心配な場合はアプリを使った方が良いかもしれません。

万が一、何かあった際のリカバリーコードが表示されるのでダウンロードや印刷を行い金庫などに入れておきます。

日本を選択し電話番号を入力。海外から飛んでくると思われるので、頭の0は削除するのをお忘れなく。

電話番号入力欄の下にある「sent authentication code」ボタンをクリック。しばらくすると実際にSMSがやってきます。

きた(・∀・) この番号を先ほどクリックした「sent authentication code」ボタンの下にある入力欄に入れ、「Enable」ボタンをクリックします。

以下のような画面が表示されれば設定完了です。

実際にログインしてみる

設定したら必ず検証を。 いったんログアウトした後、ログイン画面へ。ここまでは同じですね。

ID/PW入力画面のあとに2段階認証のコードを入れる画面が現れました。

割とすぐに認証コードが送られて来ますので、こちらを入力すれば完了です。この場合は275502ですね。

これでうっかりパスワードを漏らしてしまっても、最悪2段階認証でせき止めることができるようになりました。良かった、良かった。

HTTPSでつないでいる場合

HTTPS(SSL)でgit cloneなどしている場合、git push時などに正しいIDとパスワードを入力してもエラーで弾かれてしまいます。

$ git push
Username for 'https://github.com': katsube
Password for 'https://katsube@github.com':  (正しいパスワードを入力)
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/katsube/neec2018B.wiki.git/'

$ git remote show origin
* remote origin
  Fetch URL: https://github.com/katsube/neec2018B.wiki.git
  Push  URL: https://github.com/katsube/neec2018B.wiki.git

GitHubのWikiをcloneしようとするとHTTPSになってしまうので困った困ったというわけで、これを回避するためには、GitHubで「Personal access tokens」を発行しパスワードに使用する必要があります。

Personal access tokensの発行

2段階認証を設定したときと同様にWebからGitHubにログインをし、「Setting」から設定画面へ遷移。

左側メニューの一番下にある「Developer settings」をクリック

「Generate new token」をクリック

「Token description」にわかりやすい名前を入力し、必要なパーミションにチェックします。リポジトリに対して操作ができれば良いだけならrepoの横にチェック。最後に一番下にある「Generate token」ボタンをクリック

Tokenが発行されるのでこれをコピーしておきます。

Personal access tokensでログイン

では早速、先ほど発行したTokenでログインします。 ユーザーネームは通常通り入力し、パスワードの入力時に「Personal access token」を入れます。

$ git push
Username for 'https://github.com': katsube
Password for 'https://katsube@github.com':  (先ほど発行したTokenを入力)
Counting objects: 11, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (11/11), done.
Writing objects: 100% (11/11), 223.59 KiB | 13.97 MiB/s, done.
Total 11 (delta 3), reused 0 (delta 0)
remote: Resolving deltas: 100% (3/3), completed with 3 local objects.
To https://github.com/katsube/neec2018B.wiki.git
   406df41..ea3528b  master -> master

今度は通った!当初は毎回2段階認証をOFFにして、再設定しないといけないの?と絶望していましたが、回避方法がわかってよかったw

認証結果をキャッシュする

毎回ユーザー名とパスワードを入力するのはさすがに気が狂いそうになるので、以下のページの「認証情報をキャッシュする」の項目を参照に設定を行います。 blog.katsubemakito.net

書籍

ESET パーソナル セキュリティ (最新版) | 1台1年版 | Win/Mac/Android対応
キヤノンITソリューションズ (2016-12-08)
売り上げランキング: 173

参考サイト

qiita.com