2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Authentication failed】GitHubリポジトリをトークン認証HTTPSかSSHに変更する

Last updated at Posted at 2021-08-24

先日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を利用する

公式の手順はこちら
https://docs.github.com/ja/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token

トークンを生成する

ご自身のGotHubアカウントからsettingsを開き、

Developer settings -> Personal access tokensを開きます。

Personal access tokensに来ると、トークンキーの生成ができるので、Generate new tokenをクリック。
image.png

トークンを生成すると、有効期限や権限についてもろもろ設定できる画面に遷移します。
各種設定後、「Generate Token」を押してトークン生成!
image.png

トークン生成すると、このような感じでトークンが出てくるのでコピー。
※画面遷移してしまうとトークンは見れなくなるので、忘れずコピーしてください!
image.png

トークンを利用して認証する

最後に生成したトークンを利用して認証を行います。
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からキーを登録する。
image.png
Add SSH keyをクリックして登録!
登録後、Passwordを聞かれたら入力して登録を完了させてください。
image.png

リポジトリのURL設定を変更する

最初に確認したリポジトリをhttpsからsshに変更します。

ssh用のURLをコピーします。

リポジトリ配下に.git/configがあるので開き、
[remote "origin"]urlを先ほどコピーしたsshのURLに修正します。

% cat .git/config
[core]
        ~省略~
[remote "origin"]
        url = git@github.com:xxxxx/yyyyy.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master

これでHTTPSからSSHにリポジトリを変更して利用できるようになりました!


以上、自分への備忘録として書いてみました!

これは推奨とあるので、HTTPSを利用した方が良いのかな?
でもトークンを有効期限で都度更新していく運用もなかなか面倒だな〜と思ったり...(^^;
この辺のスタンダードな運用のやり方をご存知の方いたら是非ともご教示ください🙏

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?