【Authentication failed】GitHubリポジトリをトークン認証HTTPSかSSHに変更する
先日githubのリポジトリにpushしたらエラーになったので、解消手順を備忘として記しています。
同じ状況に陥った方の一助となればと思います!
前提環境
- PC: Mac (バージョン11.5.2)
- Gitプラットフォーム: GitHub
エラー内容と原因
githubにpushしたらAuthentication failedで怒られた...
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/xxxxxx/yyyyyy.git/'
原因は書いてある通りで、パスワードによる認証方式が2021/08/13に廃止されてるようです。
記載のヘルプページ↓に詳細がありました。
https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/
解決方法
ヘルプページに記載されているやるべきことを抜粋するとこちら↓
For developers, if you are using a password to authenticate Git operations with GitHub.com today, you must begin using a personal access token over HTTPS (recommended) or SSH key by August 13, 2021, to avoid disruption. If you receive a warning that you are using an outdated third-party integration, you should update your client to the latest version.
つまり解決方法としては、下記のいずれかになります!
- ①個人アクセストークンを生成してHTTPSを利用する(推奨らしい)
- ②SSHを利用する
ということで、それぞれの手順を記載します。
ちなみに、トークンを利用した認証はSSHでは利用できず、HTTPSのみになります。
①個人アクセストークンを生成してHTTPSを利用する
トークンを生成する
Developer settings -> Personal access tokensを開きます。
Personal access tokensに来ると、トークンキーの生成ができるので、Generate new tokenをクリック。
トークンを生成すると、有効期限や権限についてもろもろ設定できる画面に遷移します。
各種設定後、「Generate Token」を押してトークン生成!
トークン生成すると、このような感じでトークンが出てくるのでコピー。
※画面遷移してしまうとトークンは見れなくなるので、忘れずコピーしてください!
トークンを利用して認証する
最後に生成したトークンを利用して認証を行います。
git cloneやpushするときにUsernameとPasswordを聞かれるので、生成したトークンをPassword部分にペーストして認証します。
(Passwordにトークンってなんか違和感ある気もする...)
[2021/12/20 追記]
git pullだとエラーのままでUsernameとPasswordを聞かれなかったので、
一旦空の状態でもpushとかすると無事聞かれるようになって認証でき、その後pullもできました!
$ git push origin hogehoge
Username: your_username
Password: your_token
これでトークンの有効期限内は、このトークン認証でHTTPSのリポジトリを利用できるようになりました!
②リポジトリをhttpsからsshに変更する
念のため、リポジトリの状態を確認。
URLがhttpsから始まるURLになっている場合は、sshに変更します。
% git remote -v
origin https://github.com/xxxxx/yyyyy.git (fetch)
origin https://github.com/xxxxx/yyyyy.git (push)
sshキーを生成してssh-agentに追加
[TBD]
公式の参考ページはこちら↓
https://docs.github.com/ja/github/authenticating-to-github/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent
GitHubにキーを登録する
ご自身のGotHubアカウントからsettingsからSSHキーの設定を開きます。
New SSH keyからキーを登録する。
Add SSH keyをクリックして登録!
登録後、Passwordを聞かれたら入力して登録を完了させてください。
リポジトリのURL設定を変更する
最初に確認したリポジトリをhttpsからsshに変更します。
リポジトリ配下に.git/config
があるので開き、
[remote "origin"]
のurl
を先ほどコピーしたsshのURLに修正します。
% cat .git/config
[core]
~省略~
[remote "origin"]
url = [email protected]:xxxxx/yyyyy.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
これでHTTPSからSSHにリポジトリを変更して利用できるようになりました!
以上、自分への備忘録として書いてみました!
これは推奨とあるので、HTTPSを利用した方が良いのかな?
でもトークンを有効期限で都度更新していく運用もなかなか面倒だな〜と思ったり...(^^;
この辺のスタンダードな運用のやり方をご存知の方いたら是非ともご教示ください🙏
Author And Source
この問題について(【Authentication failed】GitHubリポジトリをトークン認証HTTPSかSSHに変更する), 我々は、より多くの情報をここで見つけました https://qiita.com/tonamao/items/f84ce1d926eccb8b1646著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .