[GitHub]パーソナルアクセストークンの期限切れと更新作業

---
**更新情報**
`2021.09.17`
・キーチェーンの削除をしないでPATを差し替える方法を追記。
・パーソナルアクセストークンをPATに省略と、用語として記載。
・余談を追加。
・タイトルを変更。（個人アクセストークン→パーソナルアクセストークン）
`2022.03.21` ←最新
・参考記事にGitHubのドキュメントURLを追加。
・なぜPATの期限を無制限にしない方がいいのか？の参考記事を追加
・前置きにWindows非対応記事である旨追記

## はじめに
※本記事はWindowsに対応していない箇所があります。
※ページ下部に参考になりそうな記事を貼っておいたのでそちらを参照頂ければ幸いです。

事の発端は同僚からの、
「アクセストークン期限切れし再作成したがpushができない」との相談を受けことに始まります。

自分のパーソナルアクセストークン（以降、PAT）の期限を確認したら期限切れまで１週間切っていたので、
ついでに再作成とパスワード再設定をやり、
そこで参照したいろんな記事の集約+αでまとめてみました。

結論といたしましては、
2021年8月13日にパスワード認証が廃止されたことに伴い行なったであろう、
**PATの再作成 ＆ 認証情報の削除と再登録**を行う感じです。

[用語]
個人アクセストークン ＝ パーソナルアクセストークン ＝ PAT

## Personal Access Tokenの有効期限
■設定したPATの期限は以下設定画面から確認できます。
　[Personal access tokens](https://github.com/settings/tokens)

　期限切れが近い時は、「⚠️Expires on　日付」と注意喚起マーク付きの表示になっています。
　今回は解説用にテストトークンを作成しました。
<img width="650" alt="スクリーンショット 2021-09-16 23.51.13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646665/117a9ad0-9582-d08f-da7d-833f82acd03b.png">

■更新の必要がある方は、１週間前に登録アドレス宛にの期限が近い旨、
　通知メールが届いているかと思います。
<img width="600" alt="スクリーンショット 2021-09-16 23.42.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646665/edac0875-bdac-0970-c9fa-39c21997bd9c.png">

## 作業
#### ①トークンの期日設定と再作成
期限の近いトークンの「⚠️Expires…」　をクリックし設定画面へ移動。
任意の期限(Expiration)を設定し、トークンを再作成（Regenerate token）しましょう。

:::note alert
蛇足的ですが、ページ移動後再表示ができない為、
作成した際に表示されたPATは必ずコピーしておきましょう！！
:::

<details><summary>[クリックしてね]　No Expiration（無期限）は注意</summary>
有効期限に設定項目にNo Expiration（無期限）もありますが、選択すると注意喚起が表示されます。
<img width="500" alt="スクリーンショット 2021-09-17 0.12.59.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646665/39ea4099-4012-ec40-f978-2b030965feae.png">

　無期限の危険性については、改めて書き加える予定ですが、
　現時点では漏洩リスクなどセキュリティ面で危険、くらいの認識でもいいと思います。
　通常はPJの期間内のみに設定することなどが多いんじゃないかと推測します。

→以下2022.03.21追記
無制限での設定について、やはりセキュリティ面での危険性に対して講じる策という認識でOKです。
また会社で担当するプロジェクトごとで、個人アカウントではなく共通アカウントを使用する場合などについても期限を設けて使用するのがベターでしょう。
短いスパンで更新するのが面倒な方は、半年くらいで設定しておくといいのではないでしょうか。

[[GitHub] Personal Access Tokenの有効期限を設定できるようになっていました](https://dev.classmethod.jp/articles/github-expiration-options-for-personal-access-tokens/#:~:text=%E4%BB%8A%E5%BE%8C%E3%81%AF%E6%A1%88%E4%BB%B6%E3%81%A7%E4%BD%BF%E3%81%86%E3%81%9F%E3%82%81%E3%81%AE%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E3%81%AFPJ%E6%9C%9F%E9%96%93%E4%B8%AD%E3%81%AE%E3%81%BF%E6%9C%89%E5%8A%B9%E3%80%81%E6%A4%9C%E8%A8%BC%E3%81%A7%E4%B8%80%E6%99%82%E7%9A%84%E3%81%AB%E4%BD%BF%E3%81%84%E3%81%9F%E3%81%84%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E3%81%AF1%E6%97%A5%E9%96%93%E3%81%AE%E3%81%BF%E6%9C%89%E5%8A%B9%E3%80%81%E3%81%AA%E3%81%A9%E5%BF%85%E8%A6%81%E6%9C%80%E4%BD%8E%E9%99%90%E3%81%AE%E6%9C%9F%E9%99%90%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AB%E3%82%88%E3%82%8A%E3%80%81%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E3%81%AE%E6%BC%8F%E6%B4%A9%E3%82%84%E4%B8%8D%E8%A6%81%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%9F%E5%BE%8C%E3%81%AB%E6%94%BE%E7%BD%AE%E3%81%95%E3%82%8C%E3%82%8B%E3%81%AA%E3%81%A9%E3%81%AE%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%83%AA%E3%82%B9%E3%82%AF%E3%82%92%E6%8A%91%E3%81%88%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82)
</details>

#### ②認証情報の削除と再登録
###### ■macユーザー
キーチェーンアクセスからgithub.com（インターネットパスワード）を削除。
Webフォームパスワード削除の必要はありません。
SourceTreeを使用している方は github.com Access Key for… も削除しましょう。
<img width="600" alt="スクリーンショット 2021-09-17 1.05.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646665/8e9a983e-4e8d-17cb-4007-e219c7312b1d.png">

:::note
検索窓にgit,githubなど入力しても出てこない時は、
スクロールして探してみてください！検索に引っかからない事象も確認しました。
また、検索で出たのに削除ができない場合も同様です。スクロールし、見つけたものを削除してみてください。
:::
ここを削除しないで、PATの再作成のみだとプッシュした際に
`remote: Invalid username or password.`
のような表示が出ると思います。

任意のコミットをプッシュした際に、ユーザー名とパスワードを求められるので、
パスワードにコピーしておいたトークンを入力し完了です！
ソースツリーについてもプッシュ時にパスワードを求められますので、
コピーしたPATを入力すればOKです。
<img width="300" alt="スクリーンショット 2021-09-17 1.25.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646665/a27d54e5-9812-5911-1372-2f1aade824af.png">

<details><summary>[クリックしてね]　いやいや、pushできないんですけど！って方いたら</summary>
キーチェーンの削除しようとしたけど検索しても、スクロールで探してもなかった！って話を聞きました。
キーチェーンに出てこない原因は筆者にも分かりかねます。
分かりかねますが、時間が少し時間を空けたら問題なくできたとのことでしたので、
一旦放置するか再起動でもしましょう。反映まで時間がかかるのか不明ですが、
時間が解決してくれたはたまにあります(　ﾟдﾟ)ﾅﾝﾃﾞﾅﾝ
もし原因や解決法が分かった時は、コメント頂けたら幸いです！
同様の症状に悩む方の為に記事の更新を行います。
（ユーザー名とメールの再登録は不要だと思いますが、うまくいかない時はそこからやるのもありです）</details>

###### 削除しないで更新する方法 → 2021年9月17日追記
キーチェーンアクセスからパスワードの更新もできたので、追記します。
<img width="500" art="スクリーンショット 2021-09-17 12.03.13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646665/17993f58-8ed2-4c9f-d8a1-b3aea83edf40.png">
パスワードを表示のチェックボックスをクリックすると、パスワードを求められます。
ここのパスワードはMacにログインするときのパスワードと同じでした。
また、下記PASSも求められる場合があります。（画像はSourceTreeのキーチェーン情報です）
<img width="500" art="スクリーンショット 2021-09-17 11.57.18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646665/4a2aa1c6-cb44-b1c6-85b1-81c4eca7d368.png">
アクセス許可が済むと、
現在設定しているPATが表示されるので、
そこを書き直して変更内容を保存します。

その後プッシュした際にアクセス許可を再度求められます。
SouceTreeについてはアクセス許可と再度PATを入力する必要が出るので、
作業量にあまり差がないです。

方法がいくつかあるということだけ覚えておいてください。

###### ■Windousユーザー
windowsを使用していないので実施検証できておらず詳細不明ですが、
暫定で以下記事を参考に実施してみてください。

https://qiita.com/implicit_none/items/81f8c5569bd7be002745

https://qiita.com/michimichix521/items/5981d9783efcc1d7c7cf

この記事でできたヨ！みたいな連絡貰えると嬉しいです！

# 余談
PAT（パーソナルアクセストークン）って略して記述してある記事もあるけど、略語って事前に略しますって宣言されてないと初めて読むときに面倒だなとちょっと思いました。
JSやCSSで命名するときは略語を使いすぎないよう気をつけようとも改めて思いました。

また、git config --global　でユーザー名やメールの再登録をしている記事がありましたが、
キーチェーンの削除をしてもgitconfigに記述されているものは削除されませんでしたので、
再度コマンドを打つ必要はないんじゃないかなと思いました。
キーチェーンの削除はあくまでパスワードの削除のみ、ということになります。
ただ、全体のリポジトリでユーザー名やメールの登録をし直したい場合は、必要でしょう。

## 最後に
以上、パーソナルアクセストークンの更新についてのまとめとなります。
エラーが出た時がなんだかんだ一番楽しいかもしれないと感じた筆者でした( ˘ω˘ )ｴﾗｰｶｲｹﾂｶﾞｽｯｷ
あとGitHub blogsやGitHub Docsを見るのも楽しいです！
上手くいかない時はエラーで検索、ドキュメントを読むなどの他、twitterで事象が全体で起きているのか他に同じことで悩んでいる人がいないか調べるのもいいです。解決策あったりなかったり。

https://github.blog/jp/

https://github.blog/

https://docs.github.com/ja/github


---
参考記事
[Token authentication requirements for API and Git operations](https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/)
[[GitHub] Personal Access Tokenの有効期限を設定できるようになっていました](https://dev.classmethod.jp/articles/github-expiration-options-for-personal-access-tokens/)
[【突然GitHubにpushできなくなった】 トークン生成で解決：The requested URL returned error: 403](https://zenn.dev/yuri0427/articles/9587ae6a578ee9#%E5%8E%9F%E5%9B%A0%EF%BC%9A%E4%BB%8A%E3%81%BE%E3%81%A7%E3%81%AF%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%81%A7github%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%99%E3%82%8B%E3%81%AB%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E8%AA%8D%E8%A8%BC%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%8A%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F%E3%81%8C%E3%80%81%E8%84%86%E5%BC%B1%E6%80%A7%E9%98%B2%E6%AD%A2%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AB%E5%80%8B%E4%BA%BA%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E8%AA%8D%E8%A8%BC%E3%81%AB%E5%A4%89%E6%9B%B4%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%9F%E3%81%9D%E3%81%86%E3%81%A7%E3%81%99%E3%80%82(2021%E5%B9%B48%E6%9C%8813%E6%97%A5%E3%81%AB%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E8%AA%8D%E8%A8%BC%E3%81%8C%E5%BB%83%E6%AD%A2%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99))
[Github公式ドキュメント　個人アクセストークンを使用する](https://docs.github.com/ja/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)