不正ログイン防止・GitHub + IIJ SmartKey での2段階認証の方法

Date
June 17, 2016

みなさん、こんにちは。たけのこシーズンを満喫した田舎系エンジニアの穂積です。 今回は、IIJ SmartKey を使って、GitHubを 2段階認証にする方法を紹介します!

2段階認証とは?

2段階認証とは、旧来の ID/パスワード認証に加え、ユーザーの端末(スマホなど)に送信されるセキュリティコードを用いて認証する方法を指します。

旧来のID/パスワード認証では、ID/パスワードが流出してしまった場合に第三者にログインされてしまう危険性がありました。

そこで、近年では、ID/パスワードに加え、ユーザーの端末に送信されるセキュリティコードを用いて認証することで、情報流出があった場合でも第三者に情報を盗まれないようにする取り組みが進んでいます。

GitHub における2段階認証の設定方法

GitHub でも2段階認証を設定することができます。 GitHub では2段階認証の方法として、SMS認証とアプリ認証を提供しているのですが、今回はアプリ認証を採用しました。

アプリ認証を行う場合、2段階認証をサポートするアプリを端末に導入する必要があります。

いくつかのサービスが出ているのですが、端末引継ぎが可能という利点を考慮し「IIJ SmartKey」を使うことにしました。 以下設定方法です。

まずは GitHub のユーザー設定から「Security」という項目を選択してください。選択すると下画像の通り、Two-factor authentication が表示されるかと思います。表示されましたら、「Set up two-factor authentiacation」をクリックしてください。

image

クリックすると認証方法を選択する画面に遷移しますので、アプリ認証を選択してください。

image

そうすると、QRコードが表示されるかと思います。

image

ここまで来たら、次は「IIJ SmartKey」の出番です。「IIJ SmartKey」を起動し、左上のプラスボタンをクリックして、QRコード読み込み画面に遷移してください。

QRコードを読み込むと6桁のワンタイムパスワードが表示されますので、上画像の「2. Enter the six-digit code from the application」に入力してください。これで2段階認証の設定が完了しました(`・ω・´)ゞ

2段階認証後に必要な作業

2段階認証後、既存の GitHub で管理しているリポジトリで push が行えなくなる可能性があります。

その場合の対処方法を紹介します。push が行えなくなる原因は https 接続を利用していた場合、ID/パスワードだけでは認証が通らなくなることです。

そこで、接続方法を https から ssh に変更し認証が通るようにします。

まずは、公開鍵を GitHub にアップし、接続の準備をします。ユーザー設定の「SSH and GPG keys」から「New SSH key」をクリックし、公開鍵を登録してください。 ※鍵の作成方法は割愛させていただきます。

image

公開鍵の登録が終わりましたら、ターミナルにて以下のコマンドを打ち接続確認をしましょう。

ssh -T git@github.com

以下のように表示されれば成功です。

Hi <User Name>! You’ve successfully authenticated, but GitHub does not provide shell access.

最後にリポジトリの remote 設定を https から ssh に変更する必要があります。

リポジトリのルートディレクトリに移動し、以下のコマンドを実行してください。これで push ができるようになるはずです。

git remote set-url origin git@github.com:[オーナーのユーザーIDまたはチームID]/[リポジトリ].git

※オーナーのユーザーIDまたはチームID/リポジトリ名がわからない場合には以下のコマンドで確認ができます

git remote -v

最後に

今回は、IIJ SmartKey を使って、GitHubを 2段階認証にする方法を紹介しました。

今後もためになりそうなことを記事にしていこうと思いますので、どうぞよろしくお願いします (`・ω・´)ゞ