GitHubでは2021年8月13日以降、 Password認証によるGit操作を廃止する対応が取られました。
本記事では、GitHubでPassword認証に変わって利用可能なAccess token認証とSSH接続を利用する方法についてご紹介していきます。
GitHubでAccess token認証を利用してみよう
まずはGitHubでAccess token認証を利用する方法についてご紹介していきます。
Access tokenの取得
Access tokenの発行および取得ですが、GitHubにログインした状態から画面操作で取得していきます。
トップページから右上のユーザーアイコンをクリックし、「Settings」を選択します。
画面を少し下にスクロールして、「Developer settings」を選択します。
「Personal access tokens」を選択し、「Generate new token」ボタンをクリックします。
トークンの設定画面が開きますので「Note」に利用目的、「Expiration」に有効期限、「Select scopes」に対象範囲を設定していきます。
設定が出来たら画面下部にスクロールして「Generate token」ボタンをクリックします。
画面が切り替わりtokenが発行されていることが確認出来ます。
Access token文字列の横にあるアイコンをクリックしてコピーしておきましょう。
Access token文字列はこの画面でしか確認することが出来ません。
画面を閉じてしまったり切り替えてしまった場合には再度Access tokenを発行する必要があるので注意してください。
「Personal access tokens」を再表示すると、Access tokenが作成されていることは確認出来ますが、Access token文字列を確認することが出来なくなっています。
gitコマンドでアクセストークンを利用する
では実際に取得したAccess tokenを利用してGit操作を試してみましょう。
ローカル上でリポジトリに変更を加えた状態で、git pushコマンドを実行します。
sudo git push origin [ブランチ名]
ユーザー名とパスワードを求められるので、パスワードの入力時に先程発行したAccess tokenを利用します。
$ sudo git push origin Username for 'https://github.com': [ユーザー名] Password for 'https://[ユーザー名]@github.com': [Access token]
pushに成功すると下記のように「completed」の文字が表示されています。
---省略---- remote: Resolving deltas: 100% (1/1), completed with 1 local object.
パスワード認証時のエラー
GitHubでは2021年8月13日よりパスワード認証が利用出来なくなったとご紹介しましたが、どのようなエラー表示となるのかについても確認しておきます。
上記と同じ手順でgit pushコマンドを実行し、パスワード入力の際に従来通りGitHubのログイン時に利用するパスワードを入力します。
$ sudo git push origin Username for 'https://github.com': [ユーザー名] Password for 'https://[ユーザー名]@github.com': [ログイン時のパスワード] remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information. fatal: Authentication failed for 'https://github.com/ユーザー名/リポジトリ名/'
このようにPassword認証ではなく、Access token認証を実施してくださいとの案内が表示されます。
上述した手順でAccess tokenを発行した上で再度git pushコマンドを実行してみてください。
Access token認証はHTTPS接続時に利用する方法です。
もう一つの接続方法SSHについては後述する内容をご確認ください。
GitHubにSSH接続してみよう
GitHubではHTTPS接続以外にSSH接続も利用可能です。
こちらの設定方法についても確認しておきましょう。
SSHキーの作成
SSHキーを作成するには「ssh-keygen」コマンドを実行します。
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/Users/ユーザー名/.ssh/id_rsa): Created directory '/Users/ユーザー名/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again:
キーの保存先やパスワードの設定などを行うことが出来ます。
全て任意項目となっているため、Enterでデフォルト状態で進めることも可能です。
SSHキーの追加
次に作成したSSHキーをGitHub上に追加する必要があります。
Access tokenの場合と同じようにGitHubにログインした状態からユーザーアイコンをクリックし、「Settings」を選択します。
「SSH and GPG keys」のカテゴリを選択し、「New SSH key」ボタンをクリックします。
title項目にはSSHキーを判断しやすい名称、key項目には先程ローカルで生成したkeyの内容を貼り付けます。
ローカルでの作成時全てデフォルトでEnterを押した場合は「/Users/ユーザー名/.ssh」に格納されている「id_rsa.pub」の内容を貼り付けます。
追加出来ていれば画像のようにSSHキーの情報が表示されるようになります。
接続確認
ではSSHキーの作成とGitHubへの追加が完了したので、接続確認を実施してみましょう。
ssh -T git@github.com
コマンドを実行して自分のユーザー名が表示されれば成功です。
Hi [ユーザー名]! You've successfully authenticated
さいごに: GitHubへの接続にAccess token認証を試してみよう
本記事では、GitHubのPassword認証が廃止になったことを受けて、HTTPS接続でのAccess token認証の方法およびSSH接続の方法についてご紹介してきました。
しばらくGitHubに触れていなかった方の中には、突然GitHubへの接続が出来なくなって困惑した方も多いのではないでしょうか。
ブラウザからGitHubのアカウントにログイン出来るのであれば、今回ご紹介したAccess token認証またはSSH接続に切り替えてGitHubへの接続を試してみてください。
Select scopesでどれを選べば良いか分からない方はとりあえず「repo」にチェックを付けておきましょう。
これでローカルにクローンするなどのリポジトリ操作が可能となります。